zoukankan      html  css  js  c++  java
  • 数组中的最长山脉

    暴力

    将除过最后一个和第一个元素外都当作山顶进行遍历

    class Solution {
        public int longestMountain(int[] A) {
            //1-n-1可以作为中心点
            int aSize = A.length; 
            int maxLen = 0;
            for(int mid=1;mid<aSize-1;mid++){
               int l = leftCnt(A,mid);
               int r = rightCnt(A,mid);
               if(l == 0 || r == 0) continue;
               maxLen = Math.max(maxLen,l+r+1);
            }
            return maxLen;
        }
        public int leftCnt(int []A,int mid){
            //mid
            int res = 0;
            for(int i=mid-1;i>=0;i--){
                if(A[i+1]>A[i]) res++; 
                else break;
            }
            return res;
        }
        public int rightCnt(int []A,int mid){
            int res = 0;
            for(int i=mid+1;i<A.length;i++){
                if(A[i-1]>A[i]) res++;
                else break;
            }
            return res;
        }
    
    }
    
    

    可以看出实际上是一个递增序列和递减序列和最大问题

    class Solution {
        public int longestMountain(int[] a) {
    
            int aSize = a.length;
            if(aSize == 0) return 0;
            int[] dp = new int[aSize];//以a[i]为结束节点的递增序列长度
            int[] dp1 = new int[aSize]; //以a[i]为开始点的递减序列长度(倒序的结束点)
            Arrays.fill(dp,1);
            Arrays.fill(dp1,1);
            for(int i=1;i<aSize;i++){
                if(a[i] > a[i-1]) dp[i] = Math.max(dp[i-1]+1,dp[i]);
            }
            for(int i=aSize-2;i>=0;i--){
                  if(a[i+1] < a[i]) dp1[i] = Math.max(dp1[i+1]+1,dp1[i]);
            }
            int res = 0;
            for(int i=1;i<aSize-1;i++){
                if(dp[i] < 2 || dp1[i] < 2) continue; 
                res = Math.max(res,dp[i]+dp1[i]);
            }
            return res == 0? 0:res-1;
    
    
        }
    }
    
    
    

  • 相关阅读:
    团队项目----数据库SQL语句学习总结与实践
    团队项目----德州扑克数据库设计之改进版
    期末项目《员工考勤管理系统》
    Applet
    Json
    study of javaserver faces lifecycle
    Session
    xml的用途,定义,原理,以及前景
    互联网应用于企业级应用的区别
    JavaEE体系架构
  • 原文地址:https://www.cnblogs.com/cstdio1/p/13873594.html
Copyright © 2011-2022 走看看