簡體   English   中英

使用Divide and Conquer檢查Sorted Array是否有A [i] = i

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM