如何包含通过特定测试用例所需的检入代码?



问题如下:给定一个整数数组arr,检查是否存在两个整数N和M,使得N是M的双精度(即N = 2 * M)。

更正式地检查是否存在两个索引i和j,使得:

i != j0 <= i, j < arr.lengtharr[i] == 2 * arr[j]

示例1:

输入:arr = [10,2,5,3]输出:真正的说明:N = 10是M = 5的双精度,即10 = 2 * 5。示例2:

输入:arr = [7,1,14,11]输出:真正的说明:N = 14是M = 7的双精度,即14 = 2 * 7。示例3:

输入:arr = [3,1,7,11]输出:假说明:本例中不存在N和M,使得N = 2 * M

约束条件包括:

2<长度><= 500-10^3 <= arr[i] <= 10^3

我的解决方案
class Solution {
public boolean checkIfExist(int[] arr) {
int [] arr2 = new int[arr.length];
boolean answer= false;
for (int i = 0; i < arr.length; i++) {
arr2[i]=2*arr[i];
}
for (int i = 0; i < arr.length; i++) {
for (int j = arr.length-1; j >= 0; j--) {
if((arr[i]) == arr2[j]){ 
answer=true;
break;
}
}
}
return answer;
}
}

当输入数组为[-2,0,10,-19,4,6,-8]时,测试用例失败,因为第二个索引中的0是双倍的,但是当任何地方有一个0时,它应该被忽略。

在if语句中添加arr[i] != 0将跳过任何0下面是一个例子

var arr = [10, 4, 8, 5, 16, 0]
for(var i=0; i < arr.length; i++) {
for(var j=0; j < arr.length; j++){
if(arr[i] != 0 && arr[i] * 2 == arr[j])
console.log(arr[i], arr[j])
}
}

希望有帮助

修正后的解为

class Solution {
public boolean checkIfExist(int[] arr) {
int [] arr2 = new int[arr.length];
boolean answer= false;
for (int i = 0; i < arr.length; i++) {
arr2[i]=2*arr[i];
}
for (int i = 0; i < arr.length; i++) {
for (int j = arr.length-1; j >= 0; j--) {
if(i == j){
continue;
}  if(arr[i] == arr2[j]){
answer=true;
break;
}  
}
}
return answer;
}
}

相关内容

最新更新