class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> lli = new ArrayList<>();
Integer[] first = {1};
lli.add(List.of(first));
if (numRows == 1) {
return lli;
}
Integer[] ceils = {1, 1};
lli.add(List.of(ceils));
if (numRows == 2) {
return lli;
}
for (int i = 3; i <= numRows; i++) {
Integer[] floors = new Integer[i];
floors[0] = 1;
floors[i - 1] = 1;
for (int j = 1; j < i - 1; j++) {
floors[j] = ceils[j - 1] + ceils[j];
}
ceils = floors;
lli.add(Arrays.stream(ceils).toList());
}
return lli;
}
}
class Solution {
public List<Integer> getRow(int numRows) {
List<Integer> li = new ArrayList<>();
Integer[] first = {1};
if (numRows == 0) {
li = List.of(first);
return li;
}
Integer[] ceils = {1, 1};
if (numRows == 1) {
li = List.of(ceils);
return li;
}
for (int i = 2; i <= numRows; i++) {
Integer[] floors = new Integer[i + 1];
floors[0] = 1;
floors[i] = 1;
for (int j = 1; j < i; j++) {
floors[j] = ceils[j - 1] + ceils[j];
}
ceils = floors;
}
li = List.of(ceils);
return li;
}
}
class Solution {
public int[][] imageSmoother(int[][] img) {
int m = img.length;
int n = img[0].length;
int[][] t = new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
t[i][j] = img[i][j];
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
int num = 1;
if (i > 0) {
t[i][j] += img[i - 1][j];//上
num++;
if (j > 0) {
t[i][j] += img[i - 1][j - 1];//左上
num++;
}
}
if (j > 0) {
t[i][j] += img[i][j - 1];//左
num++;
if (i < m - 1) {
t[i][j] += img[i + 1][j - 1];//左下
num++;
}
}
if (i < m - 1) {
t[i][j] += img[i + 1][j];//下
num++;
if (j < n - 1) {
t[i][j] += img[i + 1][j + 1];//右下
num++;
}
}
if (j < n - 1) {
t[i][j] += img[i][j + 1];//右
num++;
if (i > 0) {
t[i][j] += img[i - 1][j + 1];//右上
num++;
}
}
t[i][j] = t[i][j] / num;
System.out.println(t[i][j]);
}
}
return t;
}
}
class Solution {
public int maxCount(int m, int n, int[][] ops) {
int mMin = m;
int nMin = n;
for (int i = 0; i < ops.length; i++) {
if (mMin > ops[i][0]) mMin = ops[i][0];
if (nMin > ops[i][1]) nMin = ops[i][1];
}
return mMin * nMin;
}
}
class Solution {
public int countBattleships(char[][] board) {
int num = 0;
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[0].length; j++) {
if (board[i][j] == 'X') {
board[i][j] = '.';
num++;
for (int k = i + 1; k < board.length; k++) {
if (board[k][j] != 'X') break;
else board[k][j] = '.';
}
for (int l = j + 1; l < board[0].length; l++) {
if (board[i][l] != 'X') break;
else board[i][l] = '.';
}
}
}
}
return num;
}
}