首页 > 试题广场 >

局部最小值位置

[编程题]局部最小值位置
  • 热度指数:2508 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
定义局部最小的概念。arr长度为1时,arr[0]是局部最小。arr的长度为N(N>1)时,如果arr[0]<arr[1],那么arr[0]是局部最小;如果arr[N-1]<arr[N-2],那么arr[N-1]是局部最小;如果0<i<N-1,既有arr[i]<arr[i-1]又有arr[i]<arr[i+1],那么arr[i]是局部最小。 给定无序数组arr,已知arr中任意两个相邻的数都不相等,写一个函数,只需返回arr中任意一个局部最小出现的位置即可。
public class Solution {
    public int getLessIndex(int[] arr) {
        if(arr.length == 0) return -1;
if(arr.length == 1) return 0;
return localMinElement(arr, 0, arr.length - 1);
    }
    
    private static int localMinElement(int[] a, int start, int end) {
if(a[start] < a[start + 1]) return start;
if(a[end - 1] > a[end]) return end;
int mid = end / 2;
if(a[mid] < a[mid - 1] && a[mid] < a[mid + 1]) return mid;
else {
if(a[mid - 1] < a[mid + 1])
return localMinElement(a, start, mid - 1);
else
return localMinElement(a, mid + 1, end);
}
}
}
发表于 2017-06-06 21:30:43 回复(0)

问题信息

难度:
1条回答 10125浏览

热门推荐

通过挑战的用户

局部最小值位置