La cordillera más larga de la gama JAVA

Fecha: 2020-10-25

Autor: 19th LZ

Etiqueta: Programación dinámica JAVA

Descripción del Título

Llamamos "montañas" a cualquier subarreglo continuo B en el arreglo A que cumpla con las siguientes propiedades:

B.length> = 3
existe 0 <i <B.length-1 tal que B [0] <B [1] <… B [i-1] <B [i]> B [i + 1]>…> B [B.length-1]
(Nota: B puede ser cualquier submatriz de A, incluida la matriz completa A.)

Dada una matriz entera A, devuelve la longitud de la "montaña" más larga.

Si no se incluye "montaña", se devuelve 0.

Ejemplo:

示例 1:

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

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

Ideas de resolución de problemas: programación dinámica

Código

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;}


    }
}

Supongo que te gusta

Origin blog.csdn.net/cyl_csdn_1/article/details/109275599
Recomendado
Clasificación