导致死机的原因:运行时错误:索引超出范围 [4],长度为 4,即使数组初始化为动态数组



>我已经初始化了一个动态数组,但它显示的索引超出了范围.
我也尝试过提供固定长度,但它也显示了相同的错误。

错误描述:
panic: runtime error: index out of range [4] with length 4

package main
import "fmt"
func missingNumber(nums []int) int {
arrSum := 0
arrLen := len(nums) + 1
for i := 0; i < arrLen; i++ {
arrSum += nums[i]
}
numSum := arrLen * (arrLen + 1) / 2
missingNumber := numSum - arrSum
return missingNumber
}
func main() {
nums := []int{1, 3, 4, 5}
result := missingNumber(nums)
fmt.Println(result)
}

您应该将arrLen := len(nums) + 1更改为arrLen := len(nums)

数组长度为 4。为此,索引为 0,1,2,3。 但是当你试图做arrLen := len(nums) + 1.arrlen值现在为5. 但是你只有 4 个元素。 从循环中,您正在尝试获取数组中不存在的元素。 这将为您提供运行时错误,并且会死机。

这个将为您工作:

package main
import "fmt"
func missingNumber(nums []int) int {
arrSum := 0
arrLen := len(nums)
for i := 0; i < arrLen; i++ {
arrSum += nums[i]
}
m := arrLen + 1
numSum := m * (m + 1) / 2
missingNumber := numSum - arrSum
return missingNumber
}
func main() {
nums := []int{1, 3, 4, 5}
result := missingNumber(nums)
fmt.Println(result)
}

这是程序中的更正,用于从自然数序列中查找单个缺失的数字。您正在索引数组编号 [len(nums) + 1] 超出数组的边界。如果允许,这应该访问随机内存并将任何垃圾值读取为合法,您甚至不知道这种难以找到的错误。好处是 Go 检查你是否只访问数组中存在的那些元素,而不是超出该元素。在 Go 规范中阅读此内容

package main
import "fmt"
func missingNumber(nums []int) int {
arrSum := 0
arrLen := len(nums)
for i := 0; i < arrLen; i++ {
arrSum += nums[i]
}
//let n be the total natural number: which will be provided plus 1 missing
n := arrLen + 1
numSum := n * (n + 1) / 2
missingNumber := numSum - arrSum
return missingNumber
}
func main() {
nums := []int{1, 3, 4, 5}
result := missingNumber(nums)
fmt.Println(result)
}

或者,您可以使用范围循环来确保安全or _, i := range nums { ...

package main
import "fmt"
func missingNumber(nums []int) int {
arrSum := 0
arrLen := len(nums)
for _, i := range nums {
arrSum += i
}
//let n be the total natural number; which will be provided plus 1 missing
n := arrLen + 1
numSum := n * (n + 1) / 2
missingNumber := numSum - arrSum
return missingNumber
}
func main() {
nums := []int{1, 3, 4, 5}
result := missingNumber(nums)
fmt.Println(result)
}

相关内容

  • 没有找到相关文章

最新更新