mirror of
				https://github.com/krahets/hello-algo.git
				synced 2025-11-04 14:18:20 +08:00 
			
		
		
		
	1. Hashing search and test using go
This commit is contained in:
		
							
								
								
									
										35
									
								
								codes/go/chapter_searching/hashing_search.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								codes/go/chapter_searching/hashing_search.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,35 @@
 | 
			
		||||
// File: binary_search.go
 | 
			
		||||
// Created Time: 2022-12-12
 | 
			
		||||
// Author: Slone123c (274325721@qq.com)
 | 
			
		||||
 | 
			
		||||
package chapter_searching
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	//"fmt"
 | 
			
		||||
	"github.com/krahets/hello-algo/pkg"
 | 
			
		||||
	_ "github.com/krahets/hello-algo/pkg"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
/* 哈希查找(数组) */
 | 
			
		||||
func hashingSearch(m map[int]int, target int) int {
 | 
			
		||||
	// 哈希表的 key: 目标元素,value: 索引
 | 
			
		||||
	// 若哈希表中无此 key ,返回 -1
 | 
			
		||||
 | 
			
		||||
	if index, ok := m[target]; ok {
 | 
			
		||||
		return index
 | 
			
		||||
	} else {
 | 
			
		||||
		return -1
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* 哈希查找(数组) */
 | 
			
		||||
func hashingSearch1(m map[int]*pkg.ListNode, target int) *pkg.ListNode {
 | 
			
		||||
	// 哈希表的 key: 目标结点值,value: 结点对象
 | 
			
		||||
	// 若哈希表中无此 key ,返回 nil
 | 
			
		||||
 | 
			
		||||
	if node, ok := m[target]; ok {
 | 
			
		||||
		return node
 | 
			
		||||
	} else {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										35
									
								
								codes/go/chapter_searching/hashing_search_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								codes/go/chapter_searching/hashing_search_test.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,35 @@
 | 
			
		||||
// File: binary_search.go
 | 
			
		||||
// Created Time: 2022-12-12
 | 
			
		||||
// Author: Slone123c (274325721@qq.com)
 | 
			
		||||
 | 
			
		||||
package chapter_searching
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"github.com/krahets/hello-algo/pkg"
 | 
			
		||||
	"testing"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestHashingSearch(t *testing.T) {
 | 
			
		||||
	target := 3
 | 
			
		||||
	/* 哈希查找(数组) */
 | 
			
		||||
	nums := []int{1, 5, 3, 2, 4, 7, 5, 9, 10, 8}
 | 
			
		||||
	// 初始化哈希表
 | 
			
		||||
	m := make(map[int]int)
 | 
			
		||||
	for i := 0; i < len(nums); i++ {
 | 
			
		||||
		m[nums[i]] = i
 | 
			
		||||
	}
 | 
			
		||||
	index := hashingSearch(m, target)
 | 
			
		||||
	fmt.Println("目标元素 3 的索引 = ", index)
 | 
			
		||||
 | 
			
		||||
	/* 哈希查找(链表) */
 | 
			
		||||
	head := pkg.ArrayToLinkedList(nums)
 | 
			
		||||
	// 初始化哈希表
 | 
			
		||||
	m1 := make(map[int]*pkg.ListNode)
 | 
			
		||||
	for head != nil {
 | 
			
		||||
		m1[head.Val] = head
 | 
			
		||||
		head = head.Next
 | 
			
		||||
	}
 | 
			
		||||
	node := hashingSearch1(m1, target)
 | 
			
		||||
	fmt.Println("目标结点值 3 的对应结点对象为 ", node)
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user