您的位置:首页 > 其它

Leetcode -- Find Minimum in Rotated Sorted Array

2015-10-10 19:06 447 查看
题目描述:

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.

思路:二分法查找。
1. 如果中间值(nums[m]) < 最左边值(nums[l]),最小值在左半部分,即r = m
2. 如果nums[m] > nums[l],如果此时nums[r] > nums[m],即nums[r]>nums[m]>nums[l],说明nums[l]就是最小值。否则,最小值在右半部分,即l=m。
3. 循环条件为l < r-1,如果最后没有找到,需要比较nums[l]和nums[r]的大小

实现代码:

public class Solution {
public int FindMin(int[] nums) {
var l = 0;
var r = nums.Length - 1;

while(l < r - 1){
var m = (l + r) / 2;
if(nums[m] < nums[l]){
r = m;
}
else if(nums[m] > nums[l]){
if(nums[r] > nums[m]){
return nums[l];
}
l = m;
}
}

return Math.Min(nums[l], nums[r]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: