关于给出前K个重复元素频率最高的元素的一道题目,不知道是哪里逻辑出现了错误,以及为什么不能写成 //为什么不可以写成 topRank[i++]=val;而要分步骤写把topRank[i]=val;i=i++;这样写就可以了



```java
public int[] topKFrequent(int[] nums, int k) {
//用hashmap存储数据:
HashMap<Integer,Integer> map=new HashMap<>();
for (int num : nums) {
if(!map.containsKey(num))
map.put(num,1);
int value=map.get(num)+1;
map.put(num,value);
}
//以下代码复习了一下entrySet的用法:
//通过val值去找key值---不好找
//于是可以通过将map里面的key和val值调转再放入reversemap中
int [] topRank=new int[k];
int i=0;
HashMap<Integer,Integer> reversemap=new HashMap<>();
Iterator<Map.Entry<Integer,Integer>> it=map.entrySet().iterator();
while (it.hasNext()){
Map.Entry<Integer,Integer> es=it.next();
int val=es.getValue();
int key= es.getKey();
reversemap.put(val,key);//调转key,val
//为什么不可以写成 topRank[i++]=val;
topRank[i]=val;//存储不同元素出现的总次数//计数值
i=i++;
}
Arrays.sort(topRank);
//关于j>topRank.length-k-1,代表我们只取后面最大的K个
for( int j=topRank.length-1;j>topRank.length-k-1;j--){
if(reversemap.containsKey(topRank[j])){
topRank[j]=reversemap.get(topRank[j]);//更新重置topRank放入
}
}
return topRank;
}
```