941-有效山阵

给定一个A整数数组,true当且仅当它是有效的山数组时才返回。回想一下,A是一个山脉阵列,当且仅当:A.length >= 3。存在一些i与  0 < i < A.length - 1 这样的: A[0] < A[1] < ... A[i-1] < A[i] A[i] > A[i+1] > ... > A[B.length - 1]

例1: 输入:[2,1]         输出:false

例2: 输入:[3,5,5]      输出:false

例3: 输入:[0,3,2,1]   输出:true

注意: 

0 <= A.length <= 10000 ,0 <= A[i] <= 10000 

解题思路:首先求出数组最大值和下标。然后根据数组最大值的下标分别设置向左向右的光标(光标初始值为最大值下标)。向左时若靠近最大值光标的值大于其下标的前一个值光标前移。向右时,靠近最大值光标的值大于其下标的后一个值光标后移。向前的光标值等于0,向后的光标值等于A.length-1则为有效山阵。
  public static boolean validMountainArray(int[] A) {
            if (A.length>=3)
            {
                int max=A[0];
                int m=0;
                for (int i=0;i<A.length;i++)
                {
                    if (A[i]>=max)
                    {
                        max=A[i];
                        m=i;
                    }
                }
                int x=m;
                int y=m;
                if (m==A.length-1||m==0)
                {
                    return false;
                }else {
                    for (int j=m;j>0;j--)
                    {
                        if (A[j]-A[j-1]>0)
                        {
                            x--;
                        }
                    }
                    for (int k=m;k<A.length-1;k++)
                    {
                        if (A[k]-A[k+1]>0)
                        {
                            y++;
                        }
                    }

                    if (x==0&&y==A.length-1)
                        return true;
                    else
                        return false;
                }
            }else {
                return false;
            }

    }
原文地址:https://www.cnblogs.com/dloading/p/10707138.html