java找二维数组鞍点
时间: 2024-10-08 10:10:35 浏览: 28
主要介绍了二维数组中鞍点的寻找 Java
在Java中,二维数组的“鞍点”是指数组中某个位置的元素既不大于其左边元素也不小于其上边元素。形象地说,就像是马鞍的形状。找到一个二维数组中的鞍点,可以遍历整个数组,对于每个元素,检查它的上方和左方的值:
```java
public class Main {
public static int[] findKekuanshu(int[][] matrix) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return new int[]{};
}
int rows = matrix.length;
int cols = matrix[0].length;
int minRow = 0, maxRow = rows - 1;
int minCol = 0, maxCol = cols - 1;
for (int i = 0; i < rows; ++i) {
// 检查列方向
if (matrix[i][0] > matrix[i][1]) {
minCol = 1;
maxCol = cols - 1;
} else if (matrix[i][0] < matrix[i][1]) {
minCol = 0;
maxCol = 1;
}
// 搜索最左侧的最小值和最右侧的最大值
while (minCol <= maxCol) {
int mid = (minCol + maxCol) / 2;
if (matrix[i][mid] <= matrix[i][mid + 1]) {
minCol = mid + 1;
} else {
maxCol = mid - 1;
}
}
// 如果当前行有鞍点,记录位置
if (minCol != 0 && matrix[i][minCol] < matrix[i][maxCol]) {
return new int[]{i, minCol};
}
}
// 检查行方向
for (int j = 0; j < cols; ++j) {
// 类似于列方向的处理,这里省略了代码细节
}
// 如果没有找到鞍点,返回空数组
return new int[0];
}
public static void main(String[] args) {
int[][] matrix = {{9, 8, 7}, {6, 5, 4}, {3, 2, 1}};
System.out.println(Arrays.toString(findKekuanshu(matrix)));
}
}
```
这个例子展示了如何在一个二维数组中寻找鞍点,通过线性扫描的方式逐行和逐列搜索,找到满足条件的位置。
阅读全文