LeetCode 768 最多能完成排序的块II[贪心 map] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 768 最多能完成排序的块II[贪心 map] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
这是一道理解起来就很容易解决的题目,其实就是将数组尽可能分块,每块排序后是原数组升序排序后的一部分,那么直接贪心,每找到一个区域的序列与原排序后的序列相同,就ans++,直到遍历完整个数组,找区域可以用map,将对应的数记录下来,代码如下:

class Solution 
public:
    int maxChunksToSorted(vector<int>& arr) 
        vector<int> res = arr;
        sort(res.begin(), res.end());
        unordered_map<int, int> mp;
        int ans = 0;
        for(int i = 0; i < arr.size(); i ++) 
            mp[arr[i]] ++;
            if(mp[arr[i]] == 0) 
                mp.erase(arr[i]);
            
            mp[res[i]] --;
            if(mp[res[i]] == 0) 
                mp.erase(res[i]);
            
            if(mp.size() == 0) 
                ans ++;
            
        
        return ans;
    
;

以上是关于LeetCode 768 最多能完成排序的块II[贪心 map] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

力扣 每日一题 768. 最多能完成排序的块 II难度:困难,rating: 1787(区间合并+区间计数)

数据结构与算法之深入解析“最多能完成排序的块II”的求解思路与算法示例

LeetCode 0769. 最多能完成排序的块

leetcode 769. Max Chunks To Make Sorted 最多能完成排序的块(中等)

LeetCode 769 最多能完成排序的块[贪心] HERODING的LeetCode之路

LeetCode 1790. 仅执行一次字符串交换能否使两个字符串相等 / 817. 链表组件 / 769. 最多能完成排序的块