Find Minimum in Rotated Sorted Array
来源:互联网 发布:模拟投资软件 编辑:程序博客网 时间:2024/06/15 10:35
Find Minimum in Rotated Sorted Array
Suppose a sorted array 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.
You may assume no duplicate exists in the array.
此题是二分查找的变形,关键还是在于理解二分查找的思想,找到位置变化的条件。
开始low和high分别指向数组的首尾,容易得出当nums[low] < nums[high]时,nums[low]就是最小数。
三种情况:
nums[mid] = 6, nums[mid] > nums[low], 此时最小数在右侧
4 5 6 0 1
nums[mid] = 1, nums[mid] < nums[low],此时最小数在左侧
4 0 1 2 3
nums[mid] = 0, nums[mid] < nums[low],此时nums[mid]就是最小数
4 5 0 1 2
于是得出:
int mid = (low + high) / 2;if (nums[mid] < nums[low]) { high = mid - 1;} else { low = mid + 1;}
但是第三种情况例外,一种方式是特殊处理,更好的是改变比较顺序,并且nums[low]是最终结果,可得:
if (nums[mid] >= nums[low]) { low = mid + 1;} else { high = mid;}
所有代码如下:
int findMin(vector<int>& nums) { int low = 0; int high = nums.size() - 1; while (low < high) { if (nums[low] < nums[high]) { break; } int mid = (low + high) / 2; if (nums[mid] >= nums[low]) { low = mid + 1; } else { high = mid; } } return nums[low];}
0 0
- Find Minimum in Rotated Sorted Array
- [LeetCode] Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- Leetcode: Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- leetcode :Find Minimum in Rotated Sorted Array
- LeetCode:Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array II
- 【Leetcode】Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- LeetCode:Find Minimum in Rotated Sorted Array
- LeetCode: Find Minimum in Rotated Sorted Array
- leetcode: Find Minimum in Rotated Sorted Array
- [LeetCode] Find Minimum in Rotated Sorted Array
- 生产者—消费者模型及实现
- MapReduce:详解Shuffle过程
- 27个提升效率的iOS开源库推荐
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- hashmap的key值不能重复
- Find Minimum in Rotated Sorted Array
- android 自定义view的使用(最佳demo——返回标题栏)
- 使用std::move()提醒编译器对返回值进行优化
- 正益移动:AppCan核心竞争力是开放的生态系统
- 判断几个参数的不同状态,不同的情况写SQL语句判断条件,优化做法(仅供新手)
- git一些操作命令
- 程序猿必知的swift单例编写的正确方式
- iOS定位添加大头针
- 加载系统相册中图片错误CGBitmapContextCreate: unsupported color space.