Leetcode5744. 旋转盒子(JAVA简单模拟)
Posted !0 !
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode5744. 旋转盒子(JAVA简单模拟)相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/rotating-the-box/
解题思路
这题先将数组旋转90°,然后再从最底部开始,d用于盒子下落的能到达的最低位置。
代码
class Solution {
public char[][] rotateTheBox(char[][] box) {
int n = box.length;
int m = box[0].length;
char[][] b = new char[m][n]; //记录旋转之后的数组
for(int i = 0; i < n; i++) //旋转90°
for(int j = 0; j < m; j++)
b[j][n - i - 1] = box[i][j];
for(int j = 0; j < n; j++) { //从第一列开始循环
int d = m - 1; //d用于盒子下落的能到达的最低位置
for(int i = m - 1; i >= 0; i--) { //从底部开始往上遍历
if(b[i][j] == '*') //如果是障碍物,更新盒子下落的能到达的最低位置
d = i - 1;
else if(b[i][j] == '#') { //如果是盒子,将盒子落到d的位置上
b[i][j] = '.';
b[d--][j] = '#';
}
}
}
return b;
}
}
复杂度分析
- 时间复杂度:O(n * m)
- 空间复杂度:O(n * m)
以上是关于Leetcode5744. 旋转盒子(JAVA简单模拟)的主要内容,如果未能解决你的问题,请参考以下文章