Find Minimum in Rotated Sorted Array
来源:互联网 发布:java开发酒店管理系统 编辑:程序博客网 时间:2024/05/29 06:55
题目:Find Minimum in Rotated Sorted Array
Suppose an array sorted in ascending order 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.
解析: 使用二分法找到最小元素,因为没有重复元素所以直接二分
代码:
class Solution {public: int findMin(vector<int>& nums) { int left=0; int right=nums.size()-1; int mid=0; if (nums[0]<=nums[nums.size()-1]) { return nums[0]; } while(left<right) { mid=(left+right)/2; // if (nums[mid]) if (nums[mid]>nums[nums.size()-1]) { left=mid+1; } else if(nums[mid]<nums[nums.size()-1]) { right=mid; } } return nums[left]; }};Find Minimum in Rotated Sorted Array II
Follow up for "Find Minimum in Rotated Sorted Array":
What if duplicates are allowed?Would this affect the run-time complexity? How and why?
Suppose an array sorted in ascending order 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.
The array may contain duplicates.
解析:带有重复的元素,当mid的元素和左右两端的元素都相同时,无法判断下次二分时mid的位置应该是left,right,需要打破这种平衡,
然后把right--
代码:
class Solution {public: int findMin(vector<int>& nums) { int left=0; int right=nums.size()-1; int mid=0; if (nums[0]<nums[nums.size()-1]) { return nums[0]; } while(left<right) { mid=(left+right)/2; // if (nums[mid]) if (nums[mid]>nums[right]) { left=mid+1; } else if(nums[mid]<nums[right]) { right=mid; } else if(nums[mid]==nums[right]&&nums[mid]==nums[left]) { right--; } else if(nums[mid]==nums[right]&&nums[mid]!=nums[left]) { right=mid; } } return nums[right]; }};
- 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
- Android实现可移动的自定义浮动按钮
- 链表与数组的区别
- 【CQOI2017】bzoj4823 老C的方块
- React Native学习一
- java中如何导入excel表格
- Find Minimum in Rotated Sorted Array
- 将Excel数据快速大批量导入数据库的代码
- Python——列表,元组
- Windows环境使用Nexus-3.x搭建Maven私服
- nginx 基本操作
- Echarts 柱状图x轴显示全部类目
- 批量删除运行中的容器--docker
- 大数处理 JAVA
- [程序员面试宝典]翻转字串