给一个二维int数组,打印等分行下标,等分行 即该行前面所有数字之和与该行后面所有数字之和相等,例:
int a[][]={{1,1},{1,2},{1,1}, {3,2}};
1,1
1,2
1,1 ========== 这行前面所有数字之和和后面所有数字之和均为5 打印下标2
3,2
输出:2
如果没有不打印;
之前遇到的一面试题,二维数组就是障眼法,其实是找一个int数组中某个数字之前的所有数字和与之后所有数字和相等,找到这个数字位置。 满足条件的可能会有多个,下面给出找一个的代码,多个时肯定是与该数字相邻的0行
public static void find(int[][] a) {
int b[] = new int[a.length];
for (int i=0;i<b.length;i++){
for (int j=0; j<a[i].length; j++) {
b[i] += a[i][j];
}
}
int start = 0;
int end = b.length-1;
int c = b[start];
int d = b[end];
while (start < end) {
if (c - d > 0) {
end --;
d += b[end];
} else if (c - d < 0) {
start ++;
c += b[start];
} else {
if (start + 2 == end) {
System.out.println(start + 1);
break;
} else {
start ++;
end --;
}
}
}
}