【发布时间】:2017-09-11 01:09:54
【问题描述】:
我想检查数组中的元素是否根据它们出现的次数进行排序。这是假设如果元素相同,它们已经被分组。
int [] y = {7, 7, 7, 8, 8, 5, 5, 5, 5} 应该返回 false 而 int [] y = {5, 5, 5, 5, 7, 7, 7, 8, 8} 应该返回 true。有四个5,三个7,两个8,应该这样排列。
这是我目前所拥有的:
import java.io.*;
import java.util.*;
public class testing2 {
public static void main(String[] args){
int [] y = {7, 7, 7, 8, 8, 5, 5, 5, 5};
System.out.println(isSorted(y)); // should return false
}
public static boolean isSorted(int[] y){
HashMap<Integer,Integer> hash = new HashMap<Integer,Integer>();
for(int i=0; i<y.length; i++){
if(hash.containsKey(y[i])){
hash.put(y[i], hash.get(y[i]) + 1);
} else {
hash.put(y[i], 1);
}
}
System.out.println(hash);
return true; // code is not complete yet
}
}
它会打印:
{5=4, 7=3, 8=2}
true
所以现在我有了每个元素的出现次数。接下来我该怎么做?
【问题讨论】:
-
isSorted将始终返回 true,您接下来要做什么? -
如何检查,所以基本上你想说“未订购”和“已订购”?如果是这样,您可以在计数时迭代每个项目,然后如果数字发生变化,请检查其数字是否大于(或小于)之前的数字集..
-
@LKTN.25 是的,return true 部分尚未完成。我有这些事件,现在我想看看我的数组 y[] = {7, 7, 7, 8, 8, 5, 5, 5, 5} 是否根据出现次数按降序排列。不是因为出现的次数是 3、2、4,而是应该是 4、3、2