无锡装饰网站建设,WordPress程序漏洞,北京网站推广技巧,公司建一个网站要多少钱文章目录1. 题目2. 解题1. 题目
给你一个 m x n 的字符矩阵 box #xff0c;它表示一个箱子的侧视图。箱子的每一个格子可能为#xff1a;
# 表示石头* 表示固定的障碍物. 表示空位置 这个箱子被 顺时针旋转 90 度 #xff0c;由于重力原因#xff0c;部分石头的位置会发…
文章目录1. 题目2. 解题1. 题目
给你一个 m x n 的字符矩阵 box 它表示一个箱子的侧视图。箱子的每一个格子可能为
# 表示石头* 表示固定的障碍物. 表示空位置 这个箱子被 顺时针旋转 90 度 由于重力原因部分石头的位置会发生改变。 每个石头会垂直掉落直到它遇到障碍物另一个石头或者箱子的底部。 重力 不会 影响障碍物的位置同时箱子旋转不会产生惯性 也就是说石头的水平位置不会发生改变。
题目保证初始时 box 中的石头要么在一个障碍物上要么在另一个石头上要么在箱子的底部。
请你返回一个 n x m 的矩阵表示按照上述旋转后箱子内的结果。
示例 1
输入box [[#,.,#]]
输出[[.],[#],[#]]示例 2
输入box [[#,.,*,.],[#,#,*,.]]
输出[[#,.],[#,#],[*,*],[.,.]]示例 3
输入box [[#,#,*,.,*,.],[#,#,#,*,.,.],[#,#,#,.,#,.]]
输出[[.,#,#],[.,#,#],[#,#,*],[#,*,.],[#,.,*],[#,.,.]]提示
m box.length
n box[i].length
1 m, n 500
box[i][j] 只可能是 # * 或者 . 。来源力扣LeetCode 链接https://leetcode-cn.com/problems/rotating-the-box 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
建立每行的前缀和从底部开始检查
class Solution {
public:vectorvectorchar rotateTheBox(vectorvectorchar box) {int m box.size(), n box[0].size();vectorvectorchar ans(n, vectorchar(m, .));for(int i 0; i m; i){int sum 0;vectorint presum(n,0);for(int j 0; j n; j){if(box[i][j] #)sum;else if(box[i][j] *){sum 0;ans[j][m-1-i] *;//障碍物填上}presum[j] sum;}int s -1;for(int j n-1; j 0; --j)//从底部开始摆{if(presum[j] 0 s -1)s presum[j];else if(presum[j] 0)s -1;if(s 0)//有剩余的石头可摆{ans[j][m-1-i] #;s--;}}}return ans;}
};292 ms 57.1 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步