自己写的就比较暴力,直接两层循环,第一层从0开始,第二层从当前的下一位开始。看了别人的解析好多都是用哈希表实现的,按着别人的解析也写了一个。
1 func twoSum(nums []int, target int) []int { 2 temp := false 3 z := 0 4 y := 0 5 for i, v := range nums { 6 x := target - v 7 fmt.Println("找的数", x) 8 j := i + 1 9 for { 10 if j >= len(nums) { 11 break 12 } 13 if nums[j] == x { 14 temp = true 15 y = j 16 break 17 } 18 j++ 19 } 20 if temp == true { 21 z = i 22 break 23 } 24 } 25 if temp == true { 26 return []int{z, y} 27 } else { 28 return []int{0, 0} 29 } 30 }
哈希表实现两数之和:
(代码比我简洁的不是一点半点,时间是我暴力两层循环的1/3-----)
1 func twoSum1(nums []int, target int) []int { 2 hashTable := map[int]int{} 3 for i, v := range nums{ 4 if p, ok := hashTable[target-v]; ok{ 5 return []int{p, i} 6 } 7 hashTable[v] = i 8 } 9 return nil 10 }
凑字数
凑字数凑字数
凑字数凑字数凑字数
凑字数凑字数凑字数凑字数
凑字数凑字数凑字数凑字数凑字数
凑字数凑字数凑字数凑字数凑字数凑字数
标签:return,target,temp,nums,int,力扣,字数,Go,两数 From: https://www.cnblogs.com/zlnfcl/p/16792952.html