La plus longue chaîne de montagnes du tableau JAVA

Date: 2020-10-25

Auteur: 19e LZ

Étiquette: programmation dynamique JAVA

Description du titre

Nous appelons tout sous-tableau continu B dans le tableau A qui répond aux propriétés suivantes comme "montagnes":

B.length> = 3
existe 0 <i <B.length-1 tel que B [0] <B [1] <… B [i-1] <B [i]> B [i + 1]>…> B [B.length-1]
(Remarque: B peut être n'importe quel sous-tableau de A, y compris l'ensemble du tableau A.)

Étant donné un tableau d'entiers A, renvoie la longueur de la plus longue "montagne".

Si "montagne" n'est pas inclus, 0 est renvoyé.

Exemple:

示例 1:

输入:[2,1,4,7,3,2,5]
输出:5
解释:最长的 “山脉” 是 [1,4,7,3,2],长度为 5。
示例 2:

输入:[2,2,2]
输出:0
解释:不含 “山脉”。

Idées de résolution de problèmes: programmation dynamique

Code

class Solution {
    public int longestMountain(int[] A) {
        int n=A.length;
        if(n<3){
            return 0;
        }

        int right[]=new int [n];//上坡最大长度
        int left[] =new int [n];//下坡最大长度
        int max=0;

        right[0]=left[n-1]=1;

        for(int i=1;i<n;i++){
            if(A[i]>A[i-1]){
                right[i]=right[i-1]+1;
            }else{
                right[i]=1;
            }

            if(A[n-i-1]>A[n-i]){
                left[n-i-1]=left[n-i]+1;
            }else{
                left[n-i-1]=1;
            }
        }

        for(int i=0;i<n;i++){
        if(right[i]!=1&&left[i]!=1)
            max=Math.max(right[i]+left[i]-1,max);
        }

        if(max>=3){
            return max;
        }else{return 0;}


    }
}

Je suppose que tu aimes

Origine blog.csdn.net/cyl_csdn_1/article/details/109275599
conseillé
Classement