LeetCode 日记—941.valid Mountain Array

发布于 2020-11-03  106 次阅读


碎碎念:今天早上写网络安全产品开发,做一个SYN flooding工具。明明写法是一样的,但是在我的电脑上就是跑出来没有伪装IP,气死👴了。

题目如下:

Given an array A of integers, return true if and only if it is a valid mountain array.

Recall that A is a mountain array if and only if:

A.length >= 3
There exists some i with 0 < i < A.length - 1 such that: A[0] < A[1] < … A[i-1] < A[i] A[i] > A[i+1] > … > A[A.length - 1]

Example 1:

Input: [2,1]
Output: false

Example 2:

Input: [3,5,5]
Output: false

Example 3:

Input: [0,3,2,1]
Output: true
 

思路:

其实没啥好说的,就是遍历就好了,可以是从两头开始遍历,也可以是从一个方向遍历,要注意出现两个相邻位置数值一样,或者是一直递增(减)没有山顶的情况。

代码如下:

class Solution {
    public boolean validMountainArray(int[] A) {
        int flag = 0;
        int i=0,j=A.length-1;
        if(A.length<3)
            return false;
        for(;i<A.length-1;i++){
            if(A[i+1]>A[i])
                continue;
            else{
                if(A[i]==A[i+1])
                    return false;
                else{
                    flag+=1;
                    break;
                }
            }
        }
        for(;j>0;j--){
            if(A[j-1]>A[j])
                continue;
            else{
                if(A[j]==A[j-1])
                    return false;
                else{
                    flag+=1;
                    break;
                }
            }
        }
        if(i==j&&flag==2)
            return true;
        else    
            return false;
    }
}
class Solution {
    public boolean validMountainArray(int[] A) {
        int N = A.length;
        int i = 0;

        // 递增扫描
        while (i + 1 < N && A[i] < A[i + 1]) {
            i++;
        }

        // 最高点不能是数组的第一个位置或最后一个位置
        if (i == 0 || i == N - 1) {
            return false;
        }

        // 递减扫描
        while (i + 1 < N && A[i] > A[i + 1]) {
            i++;
        }

        return i == N - 1;
    }
}

你好哇!欢迎来到雷公马碎碎念的地方:)