Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ralat tidak ditemui, skrip Go tidak berfungsi seperti yang diharapkan

Ralat tidak ditemui, skrip Go tidak berfungsi seperti yang diharapkan

WBOY
WBOYke hadapan
2024-02-09 12:12:27688semak imbas

找不到错误,Go 脚本没有按预期工作

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.

Kandungan soalan

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

Penyelesaian

Masalah dengan kod anda ialah ia tidak pernah masuk ke dalam if

if target-nums[starter] == nums[i]
Pembolehubah

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam