[英]Given sorted Array, Returns index i if array A contains an element A[i] such that A[i] = i (recursive and divide and conquer)
[英]Check if Sorted Array has A[i] = i using Divide and Conquer
我得到一個具有不同元素的排序數組。
true if A[i] = i
返回true if A[i] = i
else return false;
我要求只返回真或假,而不是立場。
我已經實現了代碼,但是有一些小錯誤。
private static boolean find(int[] a, int low, int high)
{
System.out.println(Arrays.toString(a)+" "+low+ " "+high);
if(low<=high)
{
int mid = (low+high)/2;
if(mid==a[mid])
{
return true;
}
else if(a[mid]>mid)
{
find (a,low,mid-1);
}
else{
find (a,mid+1,high);
}
}
return false;
}
我知道即使它找到了中間,它也會return false
。
我應該做出哪些改變,以便在所有情況下都返回true。
在遞歸調用find的地方,你應該在調用find之前返回一個返回,這樣它就會返回嵌套調用的結果
return find(...) //etc..
你的代碼有bug!
檢查testcase0:[1,1,2,3,4,5,6,7]和testcase1 = [1,2,3,4,5,6,6]您的代碼適用於testcase1而不適用於testcase0
因為對於testcase1,mid是3和4> 3,然后你跳過[5,6,6],這會影響答案!!!! 希望它會有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.