因此,我正在研究在数组列表中查找两个最常见元素的最佳方法的问题。
我的方法是将整个东西变成一个hashmap,然后看哪个是最大的。因为我喜欢哈希图。他们似乎是一个很好的方法,我无法想出更好的解决方案。
除了我得到一个错误。这是你进来的地方(=!
public static String[] findTwo(ArrayList<String> param) {
Map<String, Integer> counter = new HashMap<String, Integer>();
for (int i = 0; i < param.size(); i++) {
//param.get(i) is name of inserted object
if (counter.get(i) == null) {
counter.put(param.get(i), 1);
System.out.println(counter.get(i) + "<-- should be 1"); // <-- erroneous part!
} else {
counter.put(param.get(i), counter.get(i)+1);
System.out.println("elsing");
}
System.out.println(counter);
}
return null;
}
此代码打印
null<-- should be 1
{HIHI=1}
null<-- should be 1
{HIHI=1}
null<-- should be 1
{HIHI=1}
null<-- should be 1
{HIHI=1}
null<-- should be 1
{yoyo=1, HIHI=1}
null<-- should be 1
{yoyo=1, HIHI=1}
null<-- should be 1
{yoyo=1, nono=1, HIHI=1}
null<-- should be 1
{yoyo=1, nono=1, froyo=1, HIHI=1}
这是完全错误的!
意思是插入 1 后该值为 null。我不知道为什么会这样?=(
啊啊啊谢谢大家!
谁能帮我弄清楚时间成本是多少?