二维数组中的鞍点 给定一个n x m的二维数组arr,其中n表示行数,m表示列数。一个元素是该数组的鞍点,如果它是该行中最大的元素并且是该列中最小的元素。请编写一个Java程序来找到二维数组中的所有鞍
时间: 2024-10-25 14:06:29 浏览: 16
鞍点在二维数组中是指那些同时满足以下两个条件的元素:它的值大于它所在行的所有其他元素,并且小于它所在列的所有其他元素。在寻找鞍点的过程中,我们需要遍历整个数组,比较每个元素与其所在的行的最大值和列的最小值。
在Java中,可以按照以下步骤实现:
```java
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
int[][] arr = { {1, 5, 9}, {2, 4, 6}, {3, 8, 7} }; // 示例二维数组
List<int[]> result = findAverages(arr);
for (int[] point : result) {
System.out.println("鞍点坐标 (" + point[0] + ", " + point[1] + ")");
}
}
public static List<int[]> findAverages(int[][] arr) {
List<int[]> result = new ArrayList<>();
if (arr == null || arr.length == 0 || arr[0].length == 0) return result;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
boolean isMaxRow = true;
boolean isMinCol = true;
// 检查是否是行最大值
for (int k = 0; k < arr[i].length; k++) {
if (arr[i][k] > arr[i][j]) {
isMaxRow = false;
break;
}
}
// 检查是否是列最小值
for (int k = 0; k < arr.length; k++) {
if (arr[k][j] < arr[i][j]) {
isMinCol = false;
break;
}
}
if (isMaxRow && isMinCol) {
result.add(new int[]{i, j});
}
}
}
return result;
}
}
```
阅读全文