leedcode做题总结,题目Find Minimum in Rotated Sorted ArrayI/II 153/154
2015-01-08 05:48
567 查看
这两道题类似于之前的旋转有序array的search,使用二分法即可,同时把middle与left的值进行比较来判断minimum的位置。与普通二分法不同的是由于数列不是有序的,所以不一定left大于right,所以要处理类似[2,1]这样的特例。同时对于有重复的来说[2,1,2,2,2]这样的情况使用二分很难处理,这是后就要移动left来找到与middle不同的数,同时,在left移动中,如果值变小了,那么就一定是minimum了。
class Solution1 { public int findMin(int[] num) { if (num == null) return 0; int l = 0, r = num.length - 1; int m; int min = num[0]; while (l < r) { m = (l + r) / 2; if (num[l] < num[m]) { min = Math.min(num[l], min); l = m + 1; } else if (num[l] > num[m]) { min = Math.min(num[m], min); r = m - 1; } else { //only when m==l and l = r-1, using l++ to break the loop. l++; } } //because the array not in order. for example, [2,1], we need to compare min with num[m+1] min = Math.min(num[r], min); return min; } }
class Solution1 { public int findMin(int[] num) { if(num==null) return 0; int l=0, r=num.length-1; int m; int min = num[0]; while(l<r){ m=(l+r)/2; if(num[l]<num[m]){ min=Math.min(num[l],min); l=m+1; } else if(num[l]>num[m]){ min=Math.min(num[m],min); r=m-1; }else{ //when m==l and l = r-1, using l++ to break the loop. //when m!=l, using l++ to find num[l]!=num[m]; min = Math.min(num[m],min); l++; if(l<num.length && num[l]<num[l-1]) return num[l]; } } //because the array not in order. for example, [2,1], we need to compare min with num[m+1] min = Math.min(num[r],min); return min; } }
相关文章推荐
- leedcode做题总结, 题目Find Minimum in Rotated Sorted Array I/II
- [LeedCode OJ]#154 Find Minimum in Rotated Sorted Array II
- Leetcode 153, 154 Find Minimum in Rotated Sorted Array I, II
- !leetcode[153 & 154]:Find Minimum in Rotated Sorted Array I & II
- leetcode(153 154) FindMinimuminRotatedSortedArray与FindMinimuminRotatedSortedArray II
- [LeedCode OJ]#153 Find Minimum in Rotated Sorted Array
- [Leetcode 153 && 154] Find Minimum in Rotated Sorted Array (II)
- Hard-题目5:154. Find Minimum in Rotated Sorted Array II
- [leedcode 154] Find Minimum in Rotated Sorted Array II
- [LeetCode 154] Find Minimum in Rotated Sorted Array II
- 【LeetCode-面试算法经典-Java实现】【154-Find Minimum in Rotated Sorted Array II(找旋转数组中的最小数字II)】
- LeetCode 154 Find Minimum in Rotated Sorted Array II
- 154 Find Minimum in Rotated Sorted Array II [Leetcode]
- leetcode[154]Find Minimum in Rotated Sorted Array II
- leetcode 154 —— Find Minimum in Rotated Sorted Array II
- leetcode做题总结,题目Search in Rotated Sorted Array I/II 2012/03/02-12/04/09
- Leetcode #154 Find Minimum in Rotated Sorted Array II
- [Leetcode 154, Hard] Find Minimum in Rotated Sorted Array II
- [LeetCode]154 Find Minimum in Rotated Sorted Array II
- leetcode 154 : Find Minimum in Rotated Sorted Array II