https://leetcode-cn.com/problems/max-chunks-to-make-sorted-ii/
    [制卡]
    思路:
    例子1
    image.png
    例子2
    image.png

    1. function maxChunksToSorted(arr: number[]): number {
    2. let stack: number[] = []
    3. for (let i = 0; i < arr.length; i++) {
    4. // 当前 arr[i] 大于 stack 最后一个值。则push 到stack中
    5. if (stack.length === 0 || stack[stack.length - 1] <= arr[i]) {
    6. stack.push(arr[i])
    7. } else {
    8. const temp = Number(stack.pop());
    9. while (stack[stack.length - 1] > arr[i]) {
    10. console.log(stack[stack.length - 1], '------------', arr[i], i)
    11. stack.pop();
    12. }
    13. stack.push(temp);
    14. }
    15. }
    16. console.log(stack);
    17. return stack.length
    18. }
    19. // console.log(maxChunksToSorted([2,1,3,4,4]));
    20. // console.log(maxChunksToSorted([5,4,3,2,1]));
    21. // console.log(maxChunksToSorted([1, 1, 0, 0, 1]));

    思路:排序求和对比

    /**
     * @param {number[]} arr
     * @return {number}
     */
    var maxChunksToSorted = function (arr) {
        const sorted = [...arr];
        sorted.sort((a, b) => a - b);
    
        let count = 0,
            sum1 = 0,
            sum2 = 0;
    
        for (let i = 0; i < arr.length; i++) {
            sum1 += arr[i];
            sum2 += sorted[i];
    
            if (sum1 === sum2) {
                count++;
                sum1 = sum2 = 0; // 这行不要也可以啦
            }
        }
    
        return count;
    };