《leetCode》: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.

思路一

在数组中寻找最小的数,对于任意数组,只需要遍历该数组即可。

实现代码如下:

int findMin(int* nums, int numsSize) {
    if(nums==NULL||numsSize<1){
        return 0;
    }
    int minRes=nums[0];
    for(int i=1;i<numsSize;i++){        
        if(nums[i]<minRes){
            minRes=nums[i];
        }
    }
    return minRes;
}

思路二

在上面的思路中,并没有利用旋转数组是由一个排序数组所得到这样一个信息,因此相信题目的本意并不是采用这种方法来做。

根据题意可知,旋转数组是根据一个排序数组旋转k为而来。
根据这个特征,只需要找到第一个后面的元素小于前面的相邻元素即为最小数;
但是有一点需要注意:如果k=0;则第一个数就是最小数

实现代码如下:

int findMin(int* nums, int numsSize) {
    if(nums==NULL||numsSize<1){
        return 0;
    }
    int minRes=nums[0];
    for(int i=0;i<numsSize-1;i++){      
        if(nums[i+1]<nums[i]){
            return nums[i+1];
        } 
    }
    return minRes;
}

你可能感兴趣的:(LeetCode,array,sorted,Minimum,rotated)