题目要求 lgN级别的复杂度
一开始根本想不到,只能想到最简单的遍历 N复杂度
后来收到1.4.18启发,
只要数组局部最大元素只有一个,就说明这是双调数组
复杂度lgN
public static int Pro1_4_20(int[] a, int lo, int hi){ //[lo,hi)
if(hi-lo<3) return 0;
int mid = lo + (hi-lo)/2;
int ans = 0;
if(a[mid-1]<a[mid]&&a[mid+1]<a[mid]) ans++;
if(mid-2>=0 && a[mid]<a[mid-1]&&a[mid-2]<a[mid-1]) ans++;
ans += Pro1_4_20(a, lo, mid) + Pro1_4_20(a, mid, hi);
return ans;
}
介绍一种在双调数组中寻找局部最大值的方法,采用分治思想,实现logN级别的复杂度。
818

被折叠的 条评论
为什么被折叠?



