JavaInterview JavaInterview
首页
指南
分类
标签
归档
  • CSDN (opens new window)
  • 文档集合 (opens new window)
  • 系统架构 (opens new window)
  • 微信号 (opens new window)
  • 公众号 (opens new window)

『Java面试+Java学习』
首页
指南
分类
标签
归档
  • CSDN (opens new window)
  • 文档集合 (opens new window)
  • 系统架构 (opens new window)
  • 微信号 (opens new window)
  • 公众号 (opens new window)
  • 指南
  • 简历

  • Java

  • 面试

  • 算法

  • algorithm
  • leetcode
JavaInterview.cn
2025-06-09
目录

1861. 旋转盒子Java

文章发布较早,内容可能过时,阅读注意甄别。

# 题目

给你一个 m x n 的字符矩阵 boxGrid ,它表示一个箱子的侧视图。箱子的每一个格子可能为:

'#' 表示石头 '*' 表示固定的障碍物 '.' 表示空位置 这个箱子被 顺时针旋转 90 度 ,由于重力原因,部分石头的位置会发生改变。每个石头会垂直掉落,直到它遇到障碍物,另一个石头或者箱子的底部。重力 不会 影响障碍物的位置,同时箱子旋转不会产生惯性 ,也就是说石头的水平位置不会发生改变。

题目保证初始时 boxGrid 中的石头要么在一个障碍物上,要么在另一个石头上,要么在箱子的底部。

请你返回一个 n x m 的矩阵,表示按照上述旋转后,箱子内的结果。

示例 1: rotatingtheboxleetcodewithstones.png

输入:box = [["#",".","#"]]
输出:[["."],
["#"],
["#"]]

示例 2:

rotatingtheboxleetcode2withstones.png

输入:box = [["#",".","*","."],
["#","#","*","."]]
输出:[["#","."],
["#","#"],
["*","*"],
[".","."]]

示例 3:

rotatingtheboxleetcode3withstone.png 输入:box = [["#","#","",".","","."], ["#","#","#","",".","."], ["#","#","#",".","#","."]] 输出:[[".","#","#"], [".","#","#"], ["#","#",""], ["#","","."], ["#",".",""], ["#",".","."]]

提示:

  • m == boxGrid.length
  • n == boxGrid[i].length
  • 1 <= m, n <= 500
  • boxGrid[i][j] 只可能是 '#' ,'*' 或者 '.' 。

# 思路

char[][] ans = new char[m][n]

# 解法

class Solution {
    public char[][] rotateTheBox(char[][] box) {
        int n = box.length, m = box[0].length;

        char[][] ans = new char[m][n];
        for(int i=0; i<n; i++){
            for(int j=0 ;j<m ;j++){
                ans[j][n-1-i] = box[i][j];
            }
        }
        for(int i=0; i<n; i++){
            int start = m-1;
            for(int j=m-1; j>=0; j--){
                if(ans[j][i] == '#'){
                    ans[j][i] = '.';
                    ans[start--][i] = '#';
                }else if(ans[j][i] == '*'){
                    start = j-1;
                }

            }
        }
        return ans;
    
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 总结

  • 分析出几种情况,然后分别对各个情况实现
微信 支付宝
#Java
最近更新
01
1644.测试路径 Java
02-25
02
1888. 使二进制字符串字符交替的最少反转次数 Java
02-25
03
1890. 2020年最后一次登录 Java
02-25
更多文章>
Theme by Vdoing | Copyright © 2019-2026 JavaInterview.cn
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式