領釦LintCode演演算法問題答案-1906. 尋找比周圍都大的點
給一個nm大小的矩陣,尋找矩陣中所有比鄰居(上下左右,對角也算,不考慮邊界就是8個咯)都嚴格大的點。
返回一個nm大小的矩陣,如果原矩陣中的點比鄰居都嚴格大,則該位置為1,反之為0。
輸入:
1 2 3
4 5 8
9 7 0
輸出:
0 0 0
0 0 1
1 0 0
public class Solution {
/**
* @param grid: a matrix
* @return: Find all points that are strictly larger than their neighbors
*/
public int[][] highpoints(int[][] grid) {
// write your code here
final int[][] ps = new int[][]{new int[]{-1,-1}, new int[]{-1, 0}, new int[]{0, -1}, new int[]{0, 1}, new int[]{1,-1}, new int[]{1,0}, new int[]{1,1}};
if (grid == null) {
return grid;
}
int r = grid.length;
if (r == 0) {
return grid;
}
int c = grid[0].length;
if (c == 0) {
return grid;
}
int[][] ret = new int[r][c];
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
boolean max = true;
for (int[] p : ps) {
int row = p[0] + i;
int col = p[1] + j;
if (row >= 0
&& row < r
&& col >=0
&& col < c) {
if (grid[row][col] >= grid[i][j]) {
max = false;
break;
}
}
}
if (max) {
ret[i][j] = 1;
} else {
ret[i][j] = 0;
}
}
}
return ret;
}
}
非常感謝你願意花時間閱讀本文章,本人水平有限,如果有什麼說的不對的地方,請指正。
歡迎各位留言討論,希望小夥伴們都能每天進步一點點。