繁体   English   中英

我可以使用递归来简化吗?

[英]Can I simplify this using recursion?

不确定我是否可以简化这两个 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;
}

如果您想获取数组中出现两次的第一个数字,您可以创建一个数字及其计数的映射,当计数为 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;
}

我没有理解你的方法的目的。

但是如果你试图从数组中找到一个元素的索引

尝试这样的事情:

System.out.println(Arrays.binarySearch(new int[] {1 ,  2, 3}, 3));

另外,如果是这种情况,在“ public static Integer search(int array[]) ”中搜索您正在尝试的键? 搜索方法名称也建议将键作为参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM