題目
假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。
( 例如,陣列 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。
請找出其中最小的元素。
注意陣列中可能存在重複的元素。
示例
示例 1:
輸入:[1,
3,5]
輸出:1
示例 2:
輸入:[2,
2,2,
0,1]
輸出:0
思路1
直接遍曆法,從後向前遍歷,不停比較連續的兩個數。如果當前元素大於等於前乙個元素,則繼續向前遍歷比較;如果當前元素小於前乙個元素,則表示當前數就是最小數。
時間複雜度o(n)
int
findmin
(vector<
int>
& nums)
return nums[0]
;}
思路2
因為是有序的陣列在某個點被旋轉,所以仍然部分有序,可以考慮使用二分法進行查詢。
int
findmin
(vector<
int>
& nums)
return nums[low]
;}
尋找旋轉排序陣列中的最小值 II
假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 請找出其中最小的元素。注意陣列中可能存在重複的元素。示例 1 示例 2 1.旋轉排序陣列 nums 可以被拆分為 2 個排序陣列 nums1,nums2 並且 num...
尋找旋轉排序陣列中的最小值 II
154.尋找旋轉排序陣列中的最小值 ii 假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 請找出其中最小的元素。注意陣列中可能存在重複的元素。示例 1 輸入 1,3,5 輸出 1 示例 2 輸入 2,2,2,0,1...
154尋找旋轉排序陣列中的最小值 II
題目描述 假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 請找出其中最小的元素。注意陣列中可能存在重複的元素。示例 1 輸入 1,3,5 輸出 1 示例 2 輸入 2,2,2,0,1 輸出 0 說明 這道題是 尋找...