我正在嘗試使用下面的 GO CODE 獲得最高數量,但我似乎無法正常作業。這是一個簡單的程式,但我無法得到正確答案,在這種情況下為 2。
package main
import (
"fmt"
)
func main() {
fmt.Print(findLargeNumberCount([]int32{4, 4, 1, 3}))
}
func findLargeNumberCount(candles []int32) int32 {
var highest int32 = 0
var prev int32 = candles[0]
for i := 1; i < len(candles); i {
if prev == candles[i] {
highest
} else if candles[i] > prev {
highest = 1
}
prev = candles[i]
}
return highest
}
uj5u.com熱心網友回復:
您應該更改代碼以使其正常作業:
package main
import (
"fmt"
)
func main() {
fmt.Print(findLargeNumberCount([]int32{4, 4, 1, 3}))
}
func findLargeNumberCount(candles []int32) int32 {
var highest int32 = 1
var prev int32 = candles[0]
for i := 1; i < len(candles); i {
if prev == candles[i] {
highest
} else if candles[i] > prev {
prev = candles[i]
highest = 1
}
}
return highest
}
https://go.dev/play/p/0OnUiGnfKXI
改變了什么:
var highest int32 = 1, 不是 0prev = candles[i]應該在 else if 塊中
解釋:
假設切片的第一個元素(candles代碼中)是最高的元素(prev代碼中)并將最高數字的計數設定為 1(highest代碼中)。
之后開始迭代切片:
如果我們有一個切片的元素(candles[i] 在代碼中)等于當前最高(prev),那么我們增加最高數量計數(highest),
否則,如果我們有一個元素 ( candles[i]) 高于當前最高值 ( prev),我們分配新的當前最高值prev = candles[i]并將最高計數重置為 1 highest = 1并繼續迭代直到切片結束。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/392440.html
標籤:去
