首页 > 解决方案 > 我可以使用递归来简化它吗?

问题描述

不确定我是否可以简化两个 for 循环,因为它们相似?任何帮助表示赞赏。我可以使用递归吗?

public static Integer Search(int array[])
{   
    //Loop through original array 
    for(int compare : array)
    {
        int count = 0;

        //Will loop through array and compare each integer to compare
        for(int currentInt : array)
        {
            //Comparing currentInt to compare
            if (currentInt == compare)
                count += 1;

            //If the currentInt is in the array twice
            if (count == 2)
                return currentInt;
        }
    }
    return null;
}

标签: java

解决方案


如果您希望获取数组中出现两次的第一个数字,您可以创建数字及其计数的映射,当计数为 2 时中断执行流程。

就像是

public Integer search(int[] array) {
    Map<Integer, Integer> counts = new HashMap<>();
    for (int a : array) {
        int count = counts.getOrDefault(a, 0);
        count++;
        if (count == 2) {
            return a;
        }
        counts.put(a, count);
    }
    return null;
}

推荐阅读