在一个旋转有序数组中,查找最小的数
2017-11-30 12:18
691 查看
本题源自leetcode 154
---------------------------------
思路:
代码:
int findMin(vector<int>& nums) {
int n = nums.size();
if(n == 0)
return 0;
int start = 0;
int end = n-1;
int res = 0;
while(start < end){
int mid = (start + end) >> 1;
if(nums[mid] < nums[end]){ //右边升序
end=mid;
}else if(nums[mid] > nums[end]){ //右边降序
start = mid + 1;
}else{
end--;
}
}
return nums[start];
}
---------------------------------
思路:
代码:
int findMin(vector<int>& nums) {
int n = nums.size();
if(n == 0)
return 0;
int start = 0;
int end = n-1;
int res = 0;
while(start < end){
int mid = (start + end) >> 1;
if(nums[mid] < nums[end]){ //右边升序
end=mid;
}else if(nums[mid] > nums[end]){ //右边降序
start = mid + 1;
}else{
end--;
}
}
return nums[start];
}
相关文章推荐
- 8+查找一个旋转数组的最小元素
- LeetCode OJ 之 Find Minimum in Rotated Sorted Array II(查找旋转有序数组中的最小值 - 二)
- 字符串算法——查找有序数组旋转后的最小值(无重复元素)(Find Minimum in Rotated Sorted Array)
- 字符串算法——查找有序数组旋转后最小值(有重复元素)(Find Minimum in Rotated Sorted Array II)
- 在一个旋转过的有序数组上实现二分查找
- 求旋转有序数组的最小值和在旋转数组中查找
- 给定一个经过一次旋转的有序数组,从中查找一个值,若存在返回它的索引,不存在返回-1
- 在一个有序的旋转数组中,查找给定值
- 给定一个经过一次旋转的有序数组,从中查找一个值,若存在返回它的索引,不存在返回-1,假定数组存在重复元素
- 在一个旋转过的有序数组上实现二分查找 收藏
- merge两个有序数组 & 查找一个有序数组中指定元素
- 循环有序数组/旋转数组的二分查找
- [经典面试题]输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。
- 《剑指Offer》查找和排序——旋转数组中的最小数字
- 二分法在有序数组中查找一个数
- 对于一个有序(升序排列)的数组a,查找所有比i(i不在a中)大的数,请写出关键代码
- 在旋转之后的已排序数组中查找一个数字
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。