0
我是新手,我遇到了我肯定是初學者錯誤。看起來我在減去任何地方都會看到一個錯誤invalid identifier character U+2013
。我是一些如何不正確使用算術運算符?我也收到錯誤unexpected name, expecting semicolon or newline or }
和non-declaration statement outside function body
,但我不太確定是什麼原因造成的。它主要看起來像是我的if語句在for循環之上。我認爲這是因爲我正在重新分配已經聲明的變量,但似乎並非如此。任何幫助將不勝感激,如果任何人有一些一般的調試技巧,這將是很好的。k'th最高的兩個排序陣列
package main
import "fmt"
func main() {
a := []int{
13, 14, 15, 16, 17,
}
b := []int{
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
}
k := 8
result := kthSmallest(a, b, k)
fmt.Printf("%v", result)
}
func kthSmallest(a []int, b []int, k int) int {
if k >= len(a) + len(b) {
fmt.Printf("The range is not large enough")
return 0
}
var lowA, lowB, highA, highB int = 0, 0, k - 1, k - 1
if len(a) < k - 1 {
highA = len(a) - 1;
}
if len(b) < k - 1 {
highB = len(b) - 1;
}
if highA + highB < k {
return 0;
}
var midA, midB int = 0, 0
var result int = 0
for k > 0 {
midA = lowA + (highA - lowA)/2;
midB = lowB + (highB - lowB)/2;
if a[midA] >= b[midB] {
k = k - (midB - lowB + 1);
result = b[midB];
highA = midA - 1;
lowB = midB + 1;
} else if a[midA] < b[midB] {
k = k - (midA - lowA + 1);
result = a[midA];
highB = midB - 1;
lowA = midA + 1;
}
}
return result
}
好吧,那就做到了。謝謝! – tim
我已經更新了我的代碼,但我仍然有點麻煩。當'k'的值設置爲2到6時,它似乎工作,但當它設置爲1時,'result'設置爲0,當它應該是1.當設置爲7時,'result'是3並將其設置爲高於7時,執行超時。我完全在看我的邏輯錯誤嗎? – tim
我想通了。再次感謝。 – tim