LeetCode-Find Minimum in Rotated Sorted Array(找出反转数组中的最小值)
来源:互联网 发布:webhook php自动部署 编辑:程序博客网 时间:2024/05/17 08:10
题1:
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.
题2:如果允许上题的数组有重复数字呢?
解法:最笨的方法,也是最容易想到的方法就是直接遍历数组,找出最小值,时间复杂度O(n),但是对于本题明显会超时。此时,比较容易想到的就是二分查找,因为其有序。但是两者肯定是有不同点的。
第一题的代码如下:
public int findMin(int[] num) { int low = 0; int high = num.length-1; while (low < high-1) { int mid = low + (high-low)/2; if (num[low] < num[high]) { if (num[mid] < num[low]) { low = mid; } else { high = mid; } } else { if (num[mid] < num[high]) { high = mid; } else { low = mid; } } } return num[low] > num[high] ? num[high] : num[low]; }
此题一定要区分,这个序列是递增的还是递减的。很多解题方法都没考虑这个问题。显然有了第一题的思路,第二题也就好解了。
public int findMin(int[] num) { int low = 0; int high = num.length-1; while (low < high-1) { int mid = low + (high-low)/2; if (num[low] < num[high]) { if (num[mid] < num[low]) { low = mid; } else if (num[mid] > num[low]){ high = mid; } else { low++; } } else { if (num[mid] < num[high]) { high = mid; } else if (num[mid] > num[high]){ low = mid; } else { high--; } } } return num[low] > num[high] ? num[high] : num[low]; }
0 0
- LeetCode-Find Minimum in Rotated Sorted Array(找出反转数组中的最小值)
- LeetCode OJ 之 Find Minimum in Rotated Sorted Array (查找旋转有序数组中的最小值)
- Find Minimum in Rotated Sorted Array (旋转数组最小值)
- LeetCode-153:Find Minimum in Rotated Sorted Array (可能旋转的排序数组中的最小值) -- medium
- LeetCode OJ 之 Find Minimum in Rotated Sorted Array II(查找旋转有序数组中的最小值 - 二)
- 159.Find Minimum in Rotated Sorted Array-寻找旋转排序数组中的最小值(中等题)
- Find Minimum in Rotated Sorted Array 旋转数组中找最小值 @LeetCode
- [leetcode 153]Find Minimum in Rotated Sorted Array----求旋转数组的最小值
- [Java语言] [Leetcode] Find Minimum in Rotated Sorted Array 找旋转有序数组的最小值
- leetcode—153. Find Minimum in Rotated Sorted Array 在翻转数组寻找最小值
- 【LintCode】 Find Minimum in Rotated Sorted Array 寻找旋转排序数组中的最小值
- Find Minimum in Rotated Sorted Array II 旋转数组中找最小值(有重复元素) @LeetCode
- 数组-Find Minimum in Rotated Sorted Array(旋转数组求最小值)
- 160.Find Minimum in Rotated Sorted Array II-寻找旋转排序数组中的最小值 II(中等题)
- [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
- sync、fsync、fdatasync、fflush函数
- mysql命令
- 递归、回溯练习题答案
- 《iOS总结》设计模式-MickyChiang
- 十道海量数据处理面试题
- LeetCode-Find Minimum in Rotated Sorted Array(找出反转数组中的最小值)
- 一些算法相关博客
- UITableView获取cell的row值(解决自定义cell里的button通过点击无法获得cell的indexpath的问题
- iOS NSNotification的使用(1)
- \r,\n,\r\n的区别
- 路由器交换器配置ISIS
- SQL HAVING的用法
- IOS即时通讯XMPP搭建openfire服务器
- iterator demo