题解 | #合唱队#

https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4

又是站在巨人肩膀上的答案

其实就是最长上升子序列
原答案:代码届的小白

import java.util.*;

public class Main{
    public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int[] arr = new int[n];
    for(int i = 0; i < n; i++){
        arr[i] = sc.nextInt();
    }

    int[] left = new int[n];
    int[] right = new int[n];

    for(int i = 0; i < n; i++){
        left[i] = 1;
        for(int j = 0; j < i; j++){
            if(arr[i] > arr[j])
                left[i] = Math.max(left[j] + 1, left[i]);
        }
    }
    for(int i = n - 1; i >= 0; i--){
        right[i] = 1;
        for(int j = n - 1; j > i; j--){
            if(arr[i] > arr[j])
                right[i] = Math.max(right[j] + 1, right[i]);
        }
    }
    int[] res = new int[n];
    for(int i = 0; i < n; i++){
        res[i] = left[i] + right[i] - 1;
    }
    int max = 0;
    for(int i = 0; i < n; i++){
        max = Math.max(max, res[i]);
    }
    System.out.println(n - max);
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务