检查 N 及其双精度是否存在

时间:2021-03-09 02:49:08

标签: java

我的代码有什么问题?我调试的时候控件不会去return语句返回true。

示例输入: [10,2,5,3]

输出应该是正确的,因为 10=5*2 但我得到了错误

class Solution {
public boolean checkIfExist(int[] arr) {
    //[10,2,5,3]
    
    int i=arr.length-1;
    
    for(int j=0;j<arr.length-2;j++)
    {
       if (arr[i] == 2 * arr[j] || arr[j] == 2 * arr[i])
        {
            return true;
        }
        else
        {
            i--;
        }
    }
    return false;
}

}

1 个答案:

答案 0 :(得分:1)

如果您打印出 ij 的所有可能值,那么您会得到

2, 0
1, 1

因此并非所有值都被检查,因此它永远不会返回。


如果你想找出数组中的任何数字是否是另一个数字的两倍,那么我会实现这样的:

for (int i = 0; i < arr.length; i++) {

    for (int j = i + 1; j < arr.length; j++) {

        if(arr[i] == 2 * arr[j] || arr[j] == 2 * arr[i]) {

            return true;
        }
    }
}

return false;