Java實現 LeetCode 769 最多能完成排序的塊(單向遍歷)

769. 最多能完成排序的塊

數組arr是[0, 1, …, arr.length - 1]的一種排列,咱們將這個數組分割成幾個「塊」,並將這些塊分別進行排序。以後再鏈接起來,使得鏈接的結果和按升序排序後的原數組相同。java

咱們最多能將數組分紅多少塊?數組

示例 1:ide

輸入: arr = [4,3,2,1,0]
輸出: 1
解釋:
將數組分紅2塊或者更多塊,都沒法獲得所需的結果。
例如,分紅 [4, 3], [2, 1, 0] 的結果是 [3, 4, 0, 1, 2],這不是有序的數組。
示例 2:spa

輸入: arr = [1,0,2,3,4]
輸出: 4
解釋:
咱們能夠把它分紅兩塊,例如 [1, 0], [2, 3, 4]。
然而,分紅 [1, 0], [2], [3], [4] 能夠獲得最多的塊數。
注意:code

arr 的長度在 [1, 10] 之間。
arr[i]是 [0, 1, …, arr.length - 1]的一種排列。排序

class Solution {
     public int maxChunksToSorted(int[] arr) {
        int n = arr.length;
        int i = 0;
        int max = 0;
        while(i < n){
            int bound = i;
            while(i <= bound){
                bound = Math.max(bound, arr[i]);
                i++;
            }
            max++;
        }
        return max;
    }
}

769. 最多能完成排序的塊

數組arr是[0, 1, …, arr.length - 1]的一種排列,咱們將這個數組分割成幾個「塊」,並將這些塊分別進行排序。以後再鏈接起來,使得鏈接的結果和按升序排序後的原數組相同。it

咱們最多能將數組分紅多少塊?io

示例 1:class

輸入: arr = [4,3,2,1,0]
輸出: 1
解釋:
將數組分紅2塊或者更多塊,都沒法獲得所需的結果。
例如,分紅 [4, 3], [2, 1, 0] 的結果是 [3, 4, 0, 1, 2],這不是有序的數組。
示例 2:di

輸入: arr = [1,0,2,3,4]
輸出: 4
解釋:
咱們能夠把它分紅兩塊,例如 [1, 0], [2, 3, 4]。
然而,分紅 [1, 0], [2], [3], [4] 能夠獲得最多的塊數。
注意:

arr 的長度在 [1, 10] 之間。
arr[i]是 [0, 1, …, arr.length - 1]的一種排列。

class Solution {
     public int maxChunksToSorted(int[] arr) {
        int n = arr.length;
        int i = 0;
        int max = 0;
        while(i < n){
            int bound = i;
            while(i <= bound){
                bound = Math.max(bound, arr[i]);
                i++;
            }
            max++;
        }
        return max;
    }
}
相關文章
相關標籤/搜索