8.24京东

1.分最大块,使得每个小块排完序和大块排完序序列是一样的。

从右往左,先保存当前位置往后最小的值,然后,再从头到尾遍历一遍

[2,1,3,4,4]分成[2,1],[3],[4],[4]最多分4块,[5,4,3,2,1]最多分一块[5,4,3,2,1]
public int maxChunksToSorted(int[] arr) {
        if (arr.length == 0) return 0;
        int[] mins = new int[arr.length];
        mins[arr.length - 1] = arr[arr.length - 1];
        for (int i = arr.length - 2; i >= 0; i--) {
            mins[i] = Math.min(arr[i], mins[i + 1]);
        }
        int count = 1;
        int pre = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (pre > mins[i]) {
                if (arr[i] > pre) pre = arr[i];
            } else {
                count++;
                pre = arr[i];
            }
        }
        return count;
    }

2.从一个图里面删除点,问最小删除多少个点,可以断开所有的线:

不会:

和POJ1966有点像

 

posted @ 2019-08-25 11:00  LeeJuly  阅读(117)  评论(0)    收藏  举报