为什么我认为代码应该返回1,为什么我的代码返回2? (属于“黑客评级”问题)

时间:2019-07-07 22:57:36

标签: java

我认为输出应该为1,但我一直得到2。黑客排名问题称为“迁移鸟”。从本质上讲,我得到了一个数字数组,所有数字都必须是1到5的整数。我要做的就是确定哪个数字在数组中显示最多。如果存在平局,则返回出现最多的最小整数。好吧,直到他们成为平手,我的解决方案才有效。由于某种原因,也许是基本的,而我只是想念它。我的代码在我认为不应该更新时也更新了1。我正在根据自己的输入进行测试:1 2 3 4 5 1 2 3 4 5.无论如何,如果有人想帮助我,将不胜感激。

static int migratoryBirds(List<Integer> arr) {
        Map <Integer, Integer> map = new HashMap<Integer, Integer>();
        int max = -1;

        for(int i = 0; i < arr.size(); i++){
            if(map.containsKey(arr.get(i))){
                map.put(arr.get(i), map.get(arr.get(i)) + 1);
            }else{
                map.put(arr.get(i), 1);
            }
        }

        for (Map.Entry<Integer,Integer> entry : map.entrySet()){
            if(entry.getValue() > max){
                max = entry.getKey();
                System.out.println(max);
            }
        }

        return max;
    }

当我认为我的代码应该给出1时,输入1 2 3 4 5 1 2 3 4 5给出2。

1 个答案:

答案 0 :(得分:1)

问题很可能在您的array变量中。您正在将映射值与this.loginService.searchPerson(this.admin).subscribe((persons: Person[]) => { if (Array.isArray(persons)) { // checks if persons is an array this.persons = persons; } else { console.error('persons in not an array'); // this.persons = [persons]; this.persons = []; } }); 进行比较,然后,如果该值大于max,则将该值的键存储在max中。在下一次迭代中,您将比较一个值和存储在max中的键,这是不正确的。

提示:尝试维护两个变量maxmax。看到它起作用后,清除冗余代码。