条件约束为:
- #会下移
- *是固定的
- 整体旋转90度,返回旋转后的矩阵
思路:
- 旋转90度(i,j)→(j,n-i-1)
- 重力下落部分:利用cnt记录#的数目,直到到该列底部或者碰到*,将上面改为#
class Solution {
public char[][] rotateTheBox(char[][] boxGrid) {
int n = boxGrid.length, m = boxGrid[0].length;
//(i,j)->(j,n-i-1)
char[][] res = new char[m][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
res[j][n-i-1] = boxGrid[i][j];
}
}
//纵坐标向下移动,
for (int i = 0; i < n; i++) {
int count = 0;
for (int j = 0; j < m; j++) {
if (res[j][i] == '*') {
while (count > 0) {
res[j - count][i] = '#';
count--;
}
} else if (res[j][i] == '#') {
count++;
res[j][i] = '.';
}
}
while (count > 0) {
res[m - count][i] = '#';
count--;
}
}
return res;
}
}
