我的代码有什么问题?我调试的时候控件不会去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;
}
}
答案 0 :(得分:1)
如果您打印出 i
和 j
的所有可能值,那么您会得到
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;