Find Minimum in Rotated Sorted Array
来源:互联网 发布:淘宝搜什么能买到片 编辑:程序博客网 时间:2024/06/04 23:36
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.
思路:也是采用折半查找的方法,如果说刚好nums[mid]这个元素大于前一个元素并且小于后一个元素,直接返回即可。如果nums[mid]小于nums[right] 则说明在前一半,否则是在后一半。最后遍历肯定会出现left==right,直接返回nums[left]即可。
public class Solution { public int findMin(int[] nums) { int length=nums.length; int left=0; int right=length-1; while(left<=right) { int mid=(left+right)/2; if(nums[left]==nums[right]) return nums[left]; if(mid>=1 && mid<length-1&&nums[mid]<nums[mid-1] && nums[mid]<nums[mid+1]) return nums[mid]; else if(nums[mid]<nums[right]) right=mid-1; else { left=mid+1; } } return nums[left]; }}
其实折半区间的时候,left不一定要等于mid+1,而right不一定要等于mid-1,因为万一此时的mid就是最小的数呢,注意最后遍历到最小数字的时候有right-left==1,但是也要注意当数组中只有一个元素的时候,或者整个数组就是升序,不进入循环,直接返回第一个元素,这就是最开始给mid赋值为left的原因。
public class Solution { public int findMin(int[] nums) { if(nums.length<=0) return 0; int left=0; int right=nums.length-1; int mid=left; while(nums[left]>nums[right]) { if(right-left==1) { mid=right; break; } mid=(left+right)/2; if(nums[mid]<=nums[right]) right=mid; if(nums[mid]>=nums[left]) left=mid; } return nums[mid]; }}
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
- 当printf("-")遇上fork() ---某公司招聘笔试题目
- 探秘Java中的String、StringBuilder以及StringBuffer
- Oracle varchar2 转换 clob 类型
- ExtJs Grid排序的时候传递自定义参数
- 什么是OEP
- Find Minimum in Rotated Sorted Array
- 0Cday2 可见度, 方法
- 查找算法
- myeclipse中,向jsp文件导入自己写的java包为什么报错
- P122 第三章 16题 n个数中大于等于平均值的个数
- 【第二次面试纪实】Failed_Again _Alibaba
- Shell基础-Bash变量-数值运算与运算符
- Android内存溢出分析
- python新浪微博模拟登陆