在矩阵中,一个元素在所在行中是最大值,在所在列中是最小值,则该元素称为这个矩阵的鞍点java代码
时间: 2024-11-06 09:23:33 浏览: 5
一个在有序行和列的矩阵中选择第k小元素的O(n)时间复杂度算法
在Java中,我们可以创建一个函数来查找矩阵中的鞍点。鞍点是指一个元素在它的行中是最大的,在它的列中是最小的。以下是一个简单的示例,假设我们有一个二维整数数组`matrix`:
```java
public class Main {
public static void main(String[] args) {
int[][] matrix = {{9, 8, 7}, {4, 5, 6}, {1, 2, 3}};
findSaddlePoint(matrix);
}
public static Pair<Integer, Integer> findSaddlePoint(int[][] matrix) {
if (matrix == null || matrix.length == 0) return null;
int rows = matrix.length;
int cols = matrix[0].length;
int maxRow = -1, minCol = cols; // 初始化最大行和最小列
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (matrix[i][j] > maxRow) {
maxRow = matrix[i][j];
minCol = j; // 更新最小列
} else if (matrix[i][j] < matrix[maxRow][minCol]) {
minCol = j; // 如果当前元素小于最大行的最小列,更新最小列
}
}
}
// 检查是否找到了鞍点
if (maxRow != -1 && matrix[maxRow][minCol] == matrix[maxRow][0]) {
return new Pair<>(maxRow, minCol); // 返回鞍点坐标
} else {
return null; // 如果没有找到符合条件的元素,返回null
}
}
// 对象Pair用于存储两个整数值
class Pair<T, U> {
private T first;
private U second;
public Pair(T first, U second) {
this.first = first;
this.second = second;
}
// ... getter and setter methods
}
}
```
在这个代码中,我们遍历矩阵并保持最大行值和对应的最小列。最后检查找到的最大值所在的行的第一个元素是否也满足是最小值,如果是,就返回这个位置作为鞍点。
阅读全文