leetcode-day17-有效的山脉数组[941]

2020-11-03  本文已影响0人  孙静静
image.png

定义两个指针,一个从头开始,如果一路递增则记录最后值;一个从尾开始,一路递增则记录最后值,如果最后两个指针的最后值一样,则返回true

算法思想: 双指针法+栈

/**
 * @param {number[]} A
 * @return {boolean}
 */
var validMountainArray = function(A) {
    // 双指针
    if(A.length<3) return false;
    let left_z = 0, right_z = A.length - 1;
    let stack = [A[0]], popshtack = [A[A.length - 1]];
    while(A.length > 0){
        let top = stack.pop();
        if(A[left_z+1] >= top){
            left_z++;
            stack.push(A[left_z]);
        } else {
            break;
        }
    }
    while(A.length > 0){
        let top = popshtack.pop();
        if(A[right_z-1] > top){
            right_z--;
            popshtack.push(A[right_z]);
        } else {
            break;
        }
    }
    if(left_z === A.length - 1 || right_z === 0){
        return false;
    }
    return left_z === right_z;
};
上一篇下一篇

猜你喜欢

热点阅读