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 769. Max Chunks To Make Sorted 最多能完成排序的块(中等)
LeetCode 769 最多能完成排序的块[贪心] HERODING的LeetCode之路
LeetCode 1790. 仅执行一次字符串交换能否使两个字符串相等 / 817. 链表组件 / 769. 最多能完成排序的块