自己寫的就比較暴力,直接兩層回圈,第一層從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 }
湊字數
湊字數湊字數
湊字數湊字數湊字數
湊字數湊字數湊字數湊字數
湊字數湊字數湊字數湊字數湊字數
湊字數湊字數湊字數湊字數湊字數湊字數
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/514251.html
標籤:其他
下一篇:day46-JDBC和連接池02
