排序矩阵中的二进制搜索
Binary search in sorted matrix
我试图在 IntelliJ 中实现测试用例;
但是,输出结果是“[I@65b54208
”,我不明白为什么这是我的结果,如何在矩阵中将我的结果显示为整数?
public class SearchMatrix {
public static void main(String[] args) {
int matrix[][]={{0,1,3},{4,5,6},{7,8,9}};
SearchMatrix s = new SearchMatrix();
System.out.println(s.Binary(matrix,3));
}
public int[] Binary(int[][] matrix, int target){
int r= matrix.length;
int c= matrix[0].length;
int left=0;
int right=r*c-1;
while (left<=right){
int mid=left+(right-left)/2;
int row=mid/c;
int col=mid%c;
if (matrix[row][col]<target){
left= mid+1;
} else if (matrix[row][col]>target){
right= mid-1;
} else{
return new int[] {row,col};
}
}
return new int[] {-1,-1};
}
}
您不能只将数组打印为原始变量。打印数组只会输出数组的哈希码(不是你想要的内容)。通过单独的语句打印每个元素
int[] result = s.Binary(matrix,3);
System.out.println(result[0]);
System.out.println(result[1]);
或者使用内置函数从 java.util.Arrays
包 javadoc
打印数组内容
System.out.println(Arrays.toString(s.Binary(matrix, 3)));
我试图在 IntelliJ 中实现测试用例;
但是,输出结果是“[I@65b54208
”,我不明白为什么这是我的结果,如何在矩阵中将我的结果显示为整数?
public class SearchMatrix {
public static void main(String[] args) {
int matrix[][]={{0,1,3},{4,5,6},{7,8,9}};
SearchMatrix s = new SearchMatrix();
System.out.println(s.Binary(matrix,3));
}
public int[] Binary(int[][] matrix, int target){
int r= matrix.length;
int c= matrix[0].length;
int left=0;
int right=r*c-1;
while (left<=right){
int mid=left+(right-left)/2;
int row=mid/c;
int col=mid%c;
if (matrix[row][col]<target){
left= mid+1;
} else if (matrix[row][col]>target){
right= mid-1;
} else{
return new int[] {row,col};
}
}
return new int[] {-1,-1};
}
}
您不能只将数组打印为原始变量。打印数组只会输出数组的哈希码(不是你想要的内容)。通过单独的语句打印每个元素
int[] result = s.Binary(matrix,3);
System.out.println(result[0]);
System.out.println(result[1]);
或者使用内置函数从 java.util.Arrays
包 javadoc
System.out.println(Arrays.toString(s.Binary(matrix, 3)));