像阵列镜一样
Is an array mirror like
我正在尝试比较数组的前半部分和后半部分。例如: [3, 7, 7, 3]
, 3, 7
是上半部分, 7, 3
是下半部分。我试过嵌套循环,但到目前为止还没有奏效。这是我的代码,问题是它有什么问题?
int [] arr = {3, 7, 7, 3};
boolean isMirror = false;
for (int i = arr.length/2 -1; i>=0; i--) {
for (int j = arr.length/2; j < arr.length; j++) {
if (arr[i] == arr[j]) {
isMirror = true;
break;
} else {
isMirror = false;
break;
}
}
}
if (isMirror) {
System.out.println("The array is mirror-like");
} else {
System.out.println("The array is not mirror-like");
}
问题是您正在使用嵌套循环将 7
与 7
和 3
进行比较,因此,isMirror
将是 false
,因此删除嵌套循环并使用单循环的两个变量
boolean isMirror=true;
for(int i=0, j = arr.length-1; i<arr.length/2;i++,j--){
if(arr[i]!=arr[j]){
isMirror=false;
break;// not equal so go out
}
}
如果你想找一个镜像,只需要一个循环:
set boolean mirror = true;
walk from i=0 (first element) to the mid of the array length (say n/2).
if array[i] != array[maxlength - i]
set mirror = false, and the you may end
当arr[i]
和arr[j]
不相等时,你只需要一个循环并设置isMirror = false
:
int[] arr = {3, 7, 7, 3};
boolean isMirror = true;
for (int i = 0; i <= arr.length/2; i++) {
int j = arr.length - 1 - i;
if (arr[i] != arr[j]) {
isMirror = false;
break;
}
}
if (isMirror) {
System.out.println("The array is mirror-like");
} else {
System.out.println("The array is not mirror-like");
}
我正在尝试比较数组的前半部分和后半部分。例如: [3, 7, 7, 3]
, 3, 7
是上半部分, 7, 3
是下半部分。我试过嵌套循环,但到目前为止还没有奏效。这是我的代码,问题是它有什么问题?
int [] arr = {3, 7, 7, 3};
boolean isMirror = false;
for (int i = arr.length/2 -1; i>=0; i--) {
for (int j = arr.length/2; j < arr.length; j++) {
if (arr[i] == arr[j]) {
isMirror = true;
break;
} else {
isMirror = false;
break;
}
}
}
if (isMirror) {
System.out.println("The array is mirror-like");
} else {
System.out.println("The array is not mirror-like");
}
问题是您正在使用嵌套循环将 7
与 7
和 3
进行比较,因此,isMirror
将是 false
,因此删除嵌套循环并使用单循环的两个变量
boolean isMirror=true;
for(int i=0, j = arr.length-1; i<arr.length/2;i++,j--){
if(arr[i]!=arr[j]){
isMirror=false;
break;// not equal so go out
}
}
如果你想找一个镜像,只需要一个循环:
set boolean mirror = true;
walk from i=0 (first element) to the mid of the array length (say n/2).
if array[i] != array[maxlength - i]
set mirror = false, and the you may end
当arr[i]
和arr[j]
不相等时,你只需要一个循环并设置isMirror = false
:
int[] arr = {3, 7, 7, 3};
boolean isMirror = true;
for (int i = 0; i <= arr.length/2; i++) {
int j = arr.length - 1 - i;
if (arr[i] != arr[j]) {
isMirror = false;
break;
}
}
if (isMirror) {
System.out.println("The array is mirror-like");
} else {
System.out.println("The array is not mirror-like");
}