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简单模拟)的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode61 旋转链表带图题解 Java

Leetcode61 旋转链表带图题解 Java

leetcode 简单第四十七题 旋转数组

[leetcode] 33. 搜索旋转排序数组(Java)

前端与算法 leetcode 189. 旋转数组

LeetCode 33 搜索旋转排序数组(Java)