公司网站开发视频教程,app营销的特点,中俄最新军事新闻,网红包装设计师题目链接#xff1a;有效的字母异位词、两个数组的交集、快乐数、两数之和
有效的字母异位词
时间复杂度: O(n) 空间复杂度: O(S), S为字符集大小#xff0c;这里为26
Go
func isAnagram(s string, t string) bool {// s和t的长度一定是相等的if len(s) ! len(t) {return…题目链接有效的字母异位词、两个数组的交集、快乐数、两数之和
有效的字母异位词
时间复杂度: O(n) 空间复杂度: O(S), S为字符集大小这里为26
Go
func isAnagram(s string, t string) bool {// s和t的长度一定是相等的if len(s) ! len(t) {return false}// 共有26个字符chars : [26]int{}for _, ch : range s {chars[ch-a]}for _, ch : range t {if chars[ch-a] 0 {return false}chars[ch-a]--}return true
}两个数组的交集
思路:
遍历nums1, 用map将nums1中的数字进行存储遍历nums2查询map中数字是否存在 如果count存在就将数字加入到结果数组并将key从map中删除
Go
时间复杂度: O(mn) 空间复杂度: O(n)
func intersection(nums1 []int, nums2 []int) []int {nums1Map : map[int]struct{}{}result : []int{}// 记录nums1for _, v : range nums1 {if _, ok : nums1Map[v]; !ok {nums1Map[v] struct{}{}}}// 遍历nums2寻找交集for _, v : range nums2 {if _, ok : nums1Map[v]; ok {result append(result, v)delete(nums1Map, v)}}return result
}
快乐数
注意项计算过程中可能会无限循环而始终得不到1 即计算过程中的sum可能会重复如果sum重复说明遇到了无限循环
go
func isHappy(n int) bool {// 用来收集summ : map[int]bool{}for n ! 1 !m[n] {m[n] truen getSum(n)}return n 1
}func getSum(n int) int {sum : 0for n ! 0 {// 获取个位数temp : n % 10sum temp * temp// 移除掉个位n / 10}return sum
}
两数之和
思路value作为map的keyvalue的index作为map的value 时间复杂度: O(n) 空间复杂度: O(n)
Go
func twoSum(nums []int, target int) []int {m : make(map[int]int)for idx, v : range nums {if otherIdx, ok : m[target-v]; ok {return []int{otherIdx, idx}} else {m[v] idx}}return []int{}
}