154. Find Minimum in Rotated Sorted Array II

ollow up for "Find Minimum in Rotated Sorted Array":
What if duplicates are allowed?

Would this affect the run-time complexity? How and why?
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

Find the minimum element.

The array may contain


仍然是在旋轉有序數組中查找最小值,但是此時元素允許重復。有可能遇到如圖所示的情況。

此時無法繼續(xù)判斷,只能退回到線性遍歷的方式。

//順序遍歷輔助函數
int help(vector<int> &num,int start,int end){
        int min_v = num[start];
        for(int i=start+1;i<=end;i++){
            min_v = min(min_v,num[i]);
        }
        return min_v;
    }
    
    int findMin(vector<int> &num) {
        int start=0,end=num.size()-1;
        
        while (start<end) {
            if (num[start]<num[end])
                return num[start];
            
            int mid = (start+end)/2;
            
            if(num[mid]==num[start] && num[mid]==num[end]){
                return help(num,start,end);
            }
            
            if (num[mid]>=num[start]) {
                start = mid+1;
            } else {
                end = mid;
            }
        }
        
        return num[start];
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容