https://leetcode.com/problems/max-chunks-to-make-sorted-ii/description/
题目大意:和769类似,只是此时数组内的数可能重复。
解题思路:和769一样,但是考虑到数据范围的原因需要使用HashMap + 一个排序好的数组 的方式来判断前k个数,是否能达到需求。
class Solution {
public int maxChunksToSorted(int[] a) {
int n =a.length;
int res=0;
Map<Integer,Integer> vis = new HashMap();
int[] b = a.clone();
Arrays.sort(b);
// for (int q:b) {
// System.out.print(q+" ");
// }
int flag=0;
for(int i=0;i<n;i++)
{
int x = a[i],y =b[i];
// System.out.print(x+" "+y+" ");
if(vis.containsKey(x)==true)
vis.put(x,vis.get(x)+1);
else
vis.put(x,1);
if(vis.get(x)==0) flag--;
if(vis.get(x)==1) flag++;
if(vis.containsKey(y))
vis.put(y,vis.get(y)-1);
else
vis.put(y,-1);
if(vis.get(y)==-1) flag++;
if(vis.get(y)==0) flag--;
// System.out.println(flag);
if(flag==0) res++;
}
return res;
}
}