3.算法通关面试 --- 哈希表和集合

Posted enlyhua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.算法通关面试 --- 哈希表和集合相关的知识,希望对你有一定的参考价值。

1.有效的字母异位词
https://leetcode-cn.com/problems/valid-anagram/


 

第一种解法:排序

func isAnagram(s, t string) bool 
	//字符串转换成字节数组
	s1, s2 := []byte(s), []byte(t)

	sort.Slice(s1, func(i,j int) bool  return s1[i] > s1[j] )
	sort.Slice(s2, func(i,j int) bool  return s2[i] > s2[j] )

	return string(s1) == string(s2)


第二种解法:哈希表

func isAnagram(s, t string) bool 
	var c1, c2 [26]int

	for _, ch := range s 
		c1[ch - 'a']++
	

	for _, ch := range t 
		c2[ch - 'a']++
	

	return c1 == c2

2.两数之和
https://leetcode-cn.com/problems/two-sum/

1.暴力枚举

func towSum(nums []int, target int) []int 
	for i, x := ranges nums 
		for j := i + 1; j < len(nums); j++ 
			if x + nums[j] == target 
				return []inti,j
			
		
	

	return nil


2.哈希表

func twoSum(nums []int, target int) []int 
	hashTable := map[int]int 

	for i, x := range nums 
		if p, ok := hashTable[target-x]; ok 
			return []int p, i
		

		hashTable[x] = i
	

	return nil

2.三数之和
https://leetcode-cn.com/problems/3sum/

3.四数之和
https://leetcode-cn.com/problems/4sum/

以上是关于3.算法通关面试 --- 哈希表和集合的主要内容,如果未能解决你的问题,请参考以下文章

两数之和(哈希解法)

算法通关手册 刷题笔记1 数组基础

2.算法通关面试 --- 堆栈和队列

01-两数之和

Java面试通关要点汇总集

刷题整理面试常见算法题集合