JAVA给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。求给定矩阵的全部局部极大值及其所在的位置。
时间: 2024-01-02 09:03:39 浏览: 152
求任意数组中所有元素的最大值JAVA代码
思路:
遍历整个矩阵,对于每一个元素,判断其是否为非边界元素,并且是否大于其上下左右四个元素,如果是,则该元素为局部极大值,将其加入到结果列表中。
代码实现:
public static List<int[]> findLocalMax(int[][] matrix) {
List<int[]> result = new ArrayList<>();
int m = matrix.length, n = matrix[0].length;
for (int i = 1; i < m - 1; i++) {
for (int j = 1; j < n - 1; j++) {
int cur = matrix[i][j];
if (cur > matrix[i - 1][j] && cur > matrix[i + 1][j] && cur > matrix[i][j - 1] && cur > matrix[i][j + 1]) {
result.add(new int[]{i, j});
}
}
}
return result;
}
其中,矩阵的边界元素不可能为局部极大值,因此只需判断非边界元素即可。
阅读全文