一个公司(名字就不提了)OA的题,做的时候觉得很简单,测试也过了,但后来还是挂了,当时没仔细想,后来看到有人po这道题,所以回来重新写一下,发现自己当时确实想错了。
题目大意如下,就是找所有peak的总数,但是和leetcode那道peak的题目不同 1 有duplicate 2 需要找所有的peak
之前总想着binary search,但是在这种情况下只能two pointer 扫描,O(N)的复杂度
// code 参考了别人的idea
public static int countAll(int[] A){
if(A == null || A.length == 0) return 0;
int res = 0;
int start = 0;
int end = 0;
//with duplicate, two pointer to scan need O(N)
while(start < A.length){
while(end < A.length && A[end] == A[start]){
//duplicate move
end++;