php小編新一在編寫Go腳本時可能會遇到找不到錯誤的問題,導致腳本無法如預期運作。這是一個常見的困擾,但也是可以解決的。本文將為大家介紹一些可能導致這個問題的原因,並提供一些解決方法,幫助大家更輕鬆地解決這個問題,讓Go腳本順利運作起來。
我試著解決這個 leetcode 問題 https://leetcode.com/problems/two-sum/ 但由於某種原因它不起作用,我真的不明白出了什麼問題。 它只會回傳 [-1 -1],而 [100 137] 是正確的輸出。
package main import "fmt" func main() { arr := []int{10, 40, 1, 4, 100, 137} targetVal := 237 // twoSum(arr, targetVal) fmt.Println(twoSum(arr, targetVal)) } func twoSum(nums []int, target int) []int { starter := 0 // loop which is supposed to find first occurence of element that is less than target for i := 0; i < len(nums); i++ { if nums[i] < target { starter = i break } } // loop that iterates over remaining part of a slice (starting from nums[starter]) for i := starter; i < len(nums); i++ { if target-nums[starter] == nums[i] { return []int{nums[starter], nums[i]} } } return []int{-1, -1} }
我目前沒有任何調試技能,所以我只是確保nums[starter]、nums[i]、所有循環都按預期工作,我使用fmt.println() 來記錄它們的值,並且它似乎在正確的位置,不知道出了什麼問題
您的程式碼的問題是它永遠不會進入if 內部
if target-nums[starter] == nums[i]
starter 變數在經過第一個迴圈後將保持為 0,因為它將只儲存第一個小於目標的值。
如果您不擔心效能,這個 o(n²) 函數可以產生正確的結果:
func twoSum(nums []int, target int) []int { for i := 0; i < len(nums); i++ { for j := 0; j < len(nums); j++ { if nums[i]+nums[j] == target && i != j { return []int{j, i} } } } return []int{-1, -1} }
以上是找不到錯誤,Go 腳本沒有如預期般運作的詳細內容。更多資訊請關注PHP中文網其他相關文章!