力扣labuladong一刷day19天花式遍历
力扣labuladong一刷day19天花式遍历
文章目录
- 力扣labuladong一刷day19天花式遍历
- 一、48. 旋转图像
- 二、54. 螺旋矩阵
- 三、59. 螺旋矩阵 II
一、48. 旋转图像
题目链接:https://leetcode.cn/problems/rotate-image/
思路:把矩阵向右旋转90度,要求原地操作,这里借鉴了把一个字符串里所有单词顺序给翻转的思路,单词顺序翻转其实是,先翻转整个字符串,然后再翻转每一个单词即可完成,而不是按照空格把每一个单词分隔开再拼回去。
把矩阵沿着左上角和右下角这条对对角线翻转,然后再每一行横向翻转即可得到顺时针旋转90度。
class Solution {public void rotate(int[][] matrix) {int n = matrix.length;for (int i = 0; i < n; i++) {for (int j = i; j < n; j++) {int temp = matrix[i][j];matrix[i][j] = matrix[j][i];matrix[j][i] = temp;}}for (int[] nums : matrix) {int i = 0, j = nums.length-1;while (i < j) {int temp = nums[i];nums[i] = nums[j];nums[j] = temp;i++;j--;}}}
}
二、54. 螺旋矩阵
题目链接:https://leetcode.cn/problems/spiral-matrix/
思路:每次读取一条边,然后每遍历一条边就调整边界。
class Solution {List<Integer> spiralOrder(int[][] matrix) {int m = matrix.length, n = matrix[0].length;int upper_bound = 0, lower_bound = m - 1;int left_bound = 0, right_bound = n - 1;List<Integer> res = new LinkedList<>();// res.size() == m * n 则遍历完整个数组while (res.size() < m * n) {if (upper_bound <= lower_bound) {// 在顶部从左向右遍历for (int j = left_bound; j <= right_bound; j++) {res.add(matrix[upper_bound][j]);}// 上边界下移upper_bound++;}if (left_bound <= right_bound) {// 在右侧从上向下遍历for (int i = upper_bound; i <= lower_bound; i++) {res.add(matrix[i][right_bound]);}// 右边界左移right_bound--;}if (upper_bound <= lower_bound) {// 在底部从右向左遍历for (int j = right_bound; j >= left_bound; j--) {res.add(matrix[lower_bound][j]);}// 下边界上移lower_bound--;}if (left_bound <= right_bound) {// 在左侧从下向上遍历for (int i = lower_bound; i >= upper_bound; i--) {res.add(matrix[i][left_bound]);}// 左边界右移left_bound++;}}return res;}
}
三、59. 螺旋矩阵 II
题目链接:https://leetcode.cn/problems/spiral-matrix-ii/
思路:正方形的螺旋矩阵可以按照四条边遍历,每次只遍历左闭右开,正好每次遍历一个圈。
class Solution {public int[][] generateMatrix(int n) {int[][] matrix = new int[n][n];int k = 1;for (int i = 0; i < n / 2; i++) {for (int j = i; j < n-i-1; j++) {matrix[i][j] = k++;}for (int j = i; j < n-i-1; j++) {matrix[j][n-i-1] = k++;}for (int j = n-i-1; j > i; j--) {matrix[n-i-1][j] = k++;}for (int j = n-i-1; j > i; j--) {matrix[j][i] = k++;}}if (n % 2 == 0) return matrix;matrix[n/2][n/2] = k;return matrix;}
}
相关文章:
力扣labuladong一刷day19天花式遍历
力扣labuladong一刷day19天花式遍历 文章目录 力扣labuladong一刷day19天花式遍历一、48. 旋转图像二、54. 螺旋矩阵三、59. 螺旋矩阵 II 一、48. 旋转图像 题目链接:https://leetcode.cn/problems/rotate-image/ 思路:把矩阵向右旋转90度,要…...
自动化部署 扩容openGauss —— Ansible for openGauss
前言 大家好,今天我们为大家推荐一套基于Ansible开发的,自动化部署及扩容openGauss的脚本工具:Ansible for openGauss(以下简称 AFO)。 通过AFO,我们只需简单修改一些配置文件,即可快速部署多种…...
C#多线程创建及线程的同步
需求:有时为了能分时的调用多个任务运行,因此需要考虑多线程的编程方式 操作步骤如下: 1)创建线程并开启线程 Thread thread0 new Thread(() > DoWork0(0)); thread0.Start(); 2)编写线程函数 static void Do…...
MOM系统功能清单
什么是MOM系统? MOM系统是制造运营管理(Manufacturing Operation Management)的缩写。它是指通过协调管理企业的人员、设备、物料和能源等资源,把原材料或零件转化为产品的活动。MOM系统集成了生产计划、库存管理、生产调度、质量…...
ARM Cortex-M核的内核态,用户态
首先,用户态和内核态是从操作系统层面上来划分的,如果没有操作系统,我可以直接运行在特权模式下,并使用特权指令。在这种情况下,我将负责管理和控制系统资源,执行关键操作,以及确保系统的安全性…...
flex布局实战之自动填充剩余
案例目标 文字部分自适应并且居中 图中是一个弹窗,我现在使用flex的布局来实现,标题和关闭按钮。因为是uni-app,所以标签是view 。你可以自行替换为 代码 <view class"popup-box"><view class"title"><view class&…...
【LeetCode】203. 移除链表元素
203. 移除链表元素 难度:简单 题目 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出ÿ…...
IDEA2023版本创建Sping项目只能勾选17和21,却无法使用Java8?(已解决)
方案:替换创建项目的源 我们只知道IDEA页面创建Spring项目,其实是访问spring initializr去创建项目。故我们可以通过阿里云国服去间接创建Spring项目。将https://start.spring.io/或者http://start.springboot.io/替换为 https://start.aliyun.com/...
Vue生命周期详解
以下是 Vue 生命周期钩子函数分别做了什么事情的详细说明 详细说明 beforeCreate(创建前):在实例初始化之前调用。此时,实例的数据观测 (data observer)、属性和方法的运算,以及事件配置等内部设置都已完成࿰…...
政务大数据与资源平台建设解决方案:PPT全文75页,附下载
关键词:智慧政务解决方案,大数据解决方案,数据中心解决方案,数据治理解决方案 一、政务大数据与资源平台建设背景 1、政务大数据已成为智慧城市建设的必要基础 为响应国家不断加快5G基建、大数据、人工智能等新型基础设施建设布…...
环境监测传感器守护我们的地球
随着人类活动的不断增加,环境问题日益凸显。为了更好地保护我们的地球,环境监测成为了一项非常重要的任务。而在这个领域,传感器技术发挥着至关重要的作用。今天,我们就来聊聊WX-WQX12 环境监测传感器。 环境监测传感器是一种能够…...
PHP 循环控制 学习资料
PHP 循环控制 在 PHP 中,循环控制语句用于控制循环的执行流程,包括跳出循环、跳过当前迭代等操作。以下是 PHP 中常用的循环控制语句的介绍和示例: break 语句 break 语句用于立即跳出当前循环,并继续执行循环之后的代码。 示…...
Unity 关于生命周期函数的一些认识
Unity 生命周期函数主要有以下一些: Awake(): 在脚本被加载时调用。用于初始化对象的状态和引用。 OnEnable(): 在脚本组件被启用时调用。在脚本组件被激活时执行一次,以及在脚本组件被重新激活时执行。 Reset(): 在脚本组件被重置时调用。用于重置脚本…...
大数据学习(26)-spark核心总结
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
EC 404 information economics
EC 404 information economics WeChat: zh6-86...
基于单片机的烟雾检测报警装置(论文+源码)
1.系统设计 (1)利用传感器实现环境中温度、烟雾浓度的实时检测; (2)系统检测的各项数据信息通过液晶模块进行显示,提高设计可视化; (3)系统可以根据实际情况利用按键模…...
C语言面试之旅:掌握基础,探索深度(面试实战之c语言关键词中篇)
劝人的话就像清晨的闹钟,只对别人有用,却永远叫不醒自己。 ----小新 一.预处理指令 (1)#define & typedef #define是C语言中定义的语法,是预处理指令,在预处理时进行简单而机械的字符串替换&…...
项目监控:项目跟踪和控制的工具和步骤
项目管理不仅仅是分配和审查任务,还包括平衡团队成员的工作量、创建预测和避免障碍的工作流程。整个过程涉及许多步骤,因此,项目监控成为了成功业务活动的关键之一,是项目经理确保与团队共同实施的计划顺利进行的方式。 项目监控为…...
GOAT:多模态、终身学习、平台无关的机器人通用导航系统
机器人应用中涉及到的核心技术包括:环境感知与理解、实时定位与建图、路径规划、行为控制等。GOAT通过多模态结合终生学习的方式让你的机器人可以在未知环境中搜索和导航到任何物体。小白也可以零门槛上手。 项目地址:https://theophilegervet.github.i…...
[webpack] webpack 插件大全
clean-webpack-plugin 一个webpack插件,用来删除/清理你的构建文件夹 html-webpack-plugin 该插件将为你生成一个 HTML5 文件, 在 body 中使用 script 标签引入你所有 webpack 生成的 bundle js 文件 zip-webpack-plugin 该插件用来压缩所有文件成一…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...
客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...
【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...
