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