LeetCode 1861. Rotating the Box

ops/2024/11/24 16:21:38/

🔗 https://leetcode.com/problems/rotating-the-box

题目

  • 给一个 m * n 的二维数组,# 代表花,* 代表墙
  • 二维数组顺时针旋转 90 度,# 会根据重力下落,要么到 * 被挡住,要么到底被挡住
  • 返回经过旋转后的二维数组

思路

  • M * N 数组,经过旋转之后 [i, j] 会变成 [j][m - i -1]
  • solution 1 是先进行重力处理,把 # 往右移动,直到碰到 * 或者到底。这里有两种处理方式,一种是遍历,另外一种是记录当前可填充 # 的位置
  • solution 2 时边重力处理,边重力处理 #,记录当前可填充 # 的位置,性能较优

代码

class Solution {
public:vector<vector<char>> rotateTheBox(vector<vector<char>>& box) {int m = box.size(), n = box[0].size();/* gravity 1for (int i = 0; i < m; i++) {for (int j = n - 2; j >=0; j--) {if (box[i][j] == '#') {int k = j;while (k < n - 1 && box[i][k + 1] == '.') {k++;}if (k > j) {box[i][k] = '#';box[i][j] = '.';}}}}*/// gravity 2for (int i = 0; i < m; i++) {int bottom = n -1;for (int j = n - 1; j >=0; j--) {if (box[i][j] == '#') {box[i][bottom] = '#';if (j != bottom) box[i][j] = '.'; bottom--;         } else if (box[i][j] == '*') bottom = j - 1;}}// rotatedvector<vector<char>> ans;for (int i = 0; i < n; i++) {vector<char> tmp;for (int j = 0; j < m; j++) {tmp.push_back(box[m - j -1][i]);}ans.push_back(tmp);}return ans;}
};

http://www.ppmy.cn/ops/136343.html

相关文章

企业办公自动化:Spring Boot OA管理系统详解

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理企业OA管理系统的相关信息成为必然。开发合…

LlamaIndex+本地部署InternLM实践

LlamaIndex本地部署InternLM实践 XTuner是一个调整模型参数的小工具,通过对于给定的大模型输入有限的参数来调整同类型问题的结果输出 ‌LlamaIndex‌是一个将大语言模型&#xff08;LLMs&#xff09;和外部数据连接在一起的工具&#xff0c;主要用于增强大模型的知识获取能力…

高级java每日一道面试题-2024年11月22日-JVM篇-说说堆和栈的区别?

如果有遗漏,评论区告诉我进行补充 面试官: 说说堆和栈的区别? 我回答: 在 Java 高级面试中&#xff0c;关于堆和栈的区别是一个常见的问题。堆和栈是 JVM&#xff08;Java虚拟机&#xff09;内存模型中的两个重要部分&#xff0c;它们在程序执行过程中扮演着不同的角色。下…

高精度计算题目合集

高精度计算题目合集 1168&#xff1a;大整数加法 1168&#xff1a;大整数加法 1168&#xff1a;大整数加法 高精度加法原理&#xff1a; a&#xff0c;b&#xff0c;c 都可以用数组表示。这些都是基于c语言的算术运算符形成的运算。 c 3 ( c 1 c 2 ) % 10 c_3(c_1c_2)\%1…

SQL MAX() 函数深入解析

SQL MAX() 函数深入解析 概述 SQL&#xff08;Structured Query Language&#xff09;是一种广泛使用的数据库查询语言&#xff0c;它允许用户从数据库中检索、更新和管理数据。在SQL中&#xff0c;MAX() 函数是一个常用的聚合函数&#xff0c;用于从数据集中找出某一列的最大…

使用ENSP实现NAT

一、项目拓扑 二、项目实现 1.路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1关闭信息中心 undo info-center enable进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为12.12.12.1/30 ip address 12.12.12.1 30进入e0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置…

版本控制和idea简体中文教程

版本控制是一种管理软件开发过程中代码变更的技术。它允许多个开发者协作编辑同一个项目&#xff0c;同时跟踪每个变更的历史记录&#xff0c;以便在需要时恢复到之前的版本。版本控制系统&#xff08;Version Control System, VCS&#xff09;是实现版本控制的具体工具。 16.…

docker-compose 安装 pgsql (postgres)

docker-compose-pg.yml 文件内容 version: 3 services:iepms-gateway:image: postgres:14.13container_name: postgresql-14.13restart: alwaysprivileged: trueenvironment:- POSTGRES_PASSWORD: test2024ports:- 15432:5432volumes:- /home/iepms/data/pgsql/data:/var/lib/…