Find Minimum in Rotated Sorted Array (旋转数组最小值)
来源:互联网 发布:外国人在中国翻译软件 编辑:程序博客网 时间:2024/05/16 11:55
题目: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.
解题思路:
使用二分查找,需要注意的是为了防止rotated sorted array退化成这种情况,1,2,3,4,5.
在比较的时候需要先和end比较。
代码:
public int findMin(int[] nums) { if (nums == null || nums.length == 0) { return -1; } int start = 0; int end = nums.length - 1; int mid; while (start + 1 < end) { mid = start + ((end - start) >> 1); //为了防止rotated array 蜕化成这种 //1 2 3 4 5 6 //需要先和end 比较 if (nums[mid] <= nums[end]) { end = mid; } else { start = mid; } } if (nums[start] < nums[end]) { return nums[start]; } return nums[end];}
题目:Find Minimum in Rotated Sorted Array II
还是上面的题目,唯一的改变是如果rotated sorted array 中有重复的数字呢。
解题思路:
还是使用二分查找,需要注意的是还是开始和end比较,情况同上。
mid等于end的时候,end往前一步。
public int findMin(int[] nums) { if (nums == null || nums.length == 0) { return -1; } int start = 0; int end = nums.length - 1; int mid; while (start + 1 < end) { mid = start + ((end -start) >> 1); if (nums[mid] < nums[end]) { end = mid; } else if (nums[mid] > nums[end]) { start = mid; } else { //如果相等则 end 往前一步 --end; } } if (nums[start] < nums[end]) { return nums[start]; } return nums[end];}
————EOF————
0 0
- Find Minimum in Rotated Sorted Array (旋转数组最小值)
- 数组-Find Minimum in Rotated Sorted Array(旋转数组求最小值)
- LeetCode OJ 之 Find Minimum in Rotated Sorted Array (查找旋转有序数组中的最小值)
- 159.Find Minimum in Rotated Sorted Array-寻找旋转排序数组中的最小值(中等题)
- Array----- 153. Find Minimum in Rotated Sorted Array(查找旋转后的有序数组中最小值)
- Find Minimum in Rotated Sorted Array 2 寻找旋转有序数组的最小值之二
- Find Minimum in Rotated Sorted Array 旋转数组中找最小值 @LeetCode
- 【LintCode】 Find Minimum in Rotated Sorted Array 寻找旋转排序数组中的最小值
- [leetcode 153]Find Minimum in Rotated Sorted Array----求旋转数组的最小值
- [Java语言] [Leetcode] Find Minimum in Rotated Sorted Array 找旋转有序数组的最小值
- 153. Find Minimum in Rotated Sorted Array--在旋转数组中找最小值
- LeetCode-153:Find Minimum in Rotated Sorted Array (可能旋转的排序数组中的最小值) -- medium
- Find Minimum in Rotated Sorted Array II 旋转数组中找最小值(有重复元素) @LeetCode
- LeetCode OJ 之 Find Minimum in Rotated Sorted Array II(查找旋转有序数组中的最小值 - 二)
- 160.Find Minimum in Rotated Sorted Array II-寻找旋转排序数组中的最小值 II(中等题)
- LeetCode-Find Minimum in Rotated Sorted Array(找出反转数组中的最小值)
- 字符串算法——查找有序数组旋转后的最小值(无重复元素)(Find Minimum in Rotated Sorted Array)
- 字符串算法——查找有序数组旋转后最小值(有重复元素)(Find Minimum in Rotated Sorted Array II)
- GCD线程死锁解锁案例分析
- C#基础-变量
- python多版本安装package
- Node.js安装
- android程序开机启动
- Find Minimum in Rotated Sorted Array (旋转数组最小值)
- Matlab中如何将长字符串换行写
- 第十四周 项目3:折腾二维数组
- 数据结构——确定一个二叉树是不是另一个二叉树的子树
- Android清单文件属性大全
- android开发EditText的Hint字体默认样式和下载字体样式的适配问题。
- 1003: [ZJOI2006]物流运输
- 解决XCode8 Protocol not available, dumping backtrace问题
- springmvc+mybatis+spring 整合 bootstrap