editor php Xinyi mungkin menghadapi masalah ralat tidak ditemui semasa menulis skrip Go, menyebabkan skrip tidak berfungsi seperti yang diharapkan. Ini adalah masalah biasa, tetapi satu yang boleh diselesaikan. Artikel ini akan memperkenalkan anda kepada beberapa kemungkinan punca masalah ini dan menyediakan beberapa penyelesaian untuk membantu anda menyelesaikan masalah ini dengan lebih mudah dan menjadikan skrip Go berjalan dengan lancar.
Saya sedang cuba menyelesaikan masalah leetcode ini https://leetcode.com/problems/two-sum/ Tetapi atas sebab tertentu ia tidak berfungsi dan saya benar-benar tidak faham apa yang berlaku. Ia hanya mengembalikan [-1 -1] manakala [100 137] ialah output yang betul.
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} }
Saya tidak mempunyai sebarang kemahiran penyahpepijatan pada masa ini, jadi saya hanya memastikan nums[starter], nums[i], semua gelung berfungsi seperti yang diharapkan, saya menggunakan fmt.println() untuk log nilainya dan itu nampaknya berada di tempat yang betul, Tidak pasti apa yang salah
Masalah dengan kod anda ialah ia tidak pernah masuk ke dalam if
if target-nums[starter] == nums[i]
starter akan kekal pada 0 selepas gelung pertama kerana ia hanya akan menyimpan nilai pertama kurang daripada sasaran.
Jika anda tidak bimbang tentang prestasi, fungsi o(n²) ini menghasilkan hasil yang betul:
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} }
Atas ialah kandungan terperinci Ralat tidak ditemui, skrip Go tidak berfungsi seperti yang diharapkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!