搜尋旋轉排序數組
LeetCode 旋轉數組兩道題 33+80+154 尋找旋轉排序數組中的最小值 II
LeetCode 旋轉數組兩道題 33+80+154 尋找旋轉排序數組中的最小值 II 搜尋旋轉排序數組 II
LeetCode 旋轉數組兩道題 33+80+154 尋找旋轉排序數組中的最小值 II class Solution {
public:
bool search(vector<int>& nums, int target) {
int len = nums.size();
int low = 0;
int high = len - 1;
int mid;
while (low <= high)
{
while (low < high&&nums[low] == nums[low + 1])
++low;
while (low < high&&nums[high] == nums[high - 1])
--high;
mid = (low + high) / 2;
if (nums[mid] == target)
return true;
if (nums[mid] > nums[high])//遞增數組在前面
{
if (nums[low] <= target&&target < nums[mid])
high = mid-1;
else
low = mid + 1;
}
else//遞增數組在後面
{
if (nums[mid] < target&&target <= nums[high])
low = mid + 1;
else
high = mid-1;
}
}
return false;
}
};
LeetCode 旋轉數組兩道題 33+80+154 尋找旋轉排序數組中的最小值 II 尋找旋轉排序數組中的最小值 II
LeetCode 旋轉數組兩道題 33+80+154 尋找旋轉排序數組中的最小值 II class Solution {
public:
int findMin(vector<int>& nums) {
//使用的是while消除重複字元
int len=nums.size();
int low=0;
int high=len-1;
int mid;
while(low<high)
{
while(low<high&&nums[low]==nums[low+1])
++low;
while(low<high&&nums[high]==nums[high-1])
--high;
mid=(low+high)/2;
if(nums[mid]>nums[high])
low=mid+1;
else
high=mid;
}
return nums[low];
}
};
LeetCode 旋轉數組兩道題 33+80+154 尋找旋轉排序數組中的最小值 II