LeetCode(153) Find Minimum in Rotated Sorted Array
2015-10-23 13:29
429 查看
题目
Total Accepted: 65121 Total Submissions: 190974 Difficulty: MediumSuppose 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.
分析
二分搜索的扩展应用。寻找一个有序序列经旋转后的最小元素。
关键是掌握好,有序序列旋转后的元素之间的关系。
AC代码
class Solution { public: int findMin(vector<int>& nums) { if (nums.empty()) return INT_MIN; //元素个数 int size = nums.size(); int lhs = 0, rhs = size - 1; while (lhs <= rhs) { //递增状态,返回低位值 if (nums[lhs] <= nums[rhs]) return nums[lhs]; //相邻,返回较小值 else if (rhs - lhs == 1) return nums[lhs] < nums[rhs] ? nums[lhs] : nums[rhs]; //判断子序列 int mid = (lhs + rhs) / 2; //右侧递增,则最小值位于左半部分 if (nums[mid] < nums[rhs]) { rhs = mid; } //否则,最小值位于右半部分 else{ lhs = mid + 1; } }//while } //优化函数 int findMin2(vector<int>& nums) { if (nums.size() == 1) return nums[0]; int lhs = 0, rhs = nums.size() - 1; while (nums[lhs] > nums[rhs]) { int mid = (lhs + rhs) / 2; if (nums[mid] > nums[rhs]) lhs = mid + 1; else rhs = mid; }//while return nums[lhs]; } };
GitHub测试程序源码
相关文章推荐
- linux网络编程中遇到的ioctl中的标志
- LeetCode(153) Find Minimum in Rotated Sorted Array
- target="_parent"
- Notepad++配置Python与gcc、go
- NPOI 2.0 教程
- LeetCode:Balanced Binary Tree
- 求解决一个单链表插入排序的问题
- win7运行bat文件 一闪而过 解决
- Hadoop集群搭建的密钥配置SSH实现机制的配置(2)
- 更改Eclipse下Tomcat的部署目录 ,防止上传的文件是到eclipse的克隆的tomcat上的webapp,而不是tomcat本身的webapp
- 搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)
- IOS网络笔记--音乐播放器
- Boost源码学习二[内存管理一]中
- SQL中的cast()函数介绍
- spring @Resourse注解使用方法,建议使用Resourse
- 对进程和线程一个形象的比喻
- PHP设计模式三:原型设计模式
- linux mint上无法登陆mate桌面
- nodejs实战express笔记之增加编辑与删除功能
- C++ 类的静态成员详细讲解