力扣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;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/166255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

完美解决AttributeError: ‘NoneType‘ object has no attribute ‘append‘

文章目录 一、原始代码二、修改后的代码--最后一行代码append进行了修改总结 一、原始代码 logits_list [] # 创建一个空列表来存储每个logitslabels_list []for i, batch in enumerate(test_tasks):with torch.no_grad():logits, labels, loss, acc self.fast_adapt(batc…

斯坦福大学引入FlashFFTConv来优化机器学习中长序列的FFT卷积

斯坦福大学的FlashFFTConv优化了扩展序列的快速傅里叶变换(FFT)卷积。该方法引入Monarch分解&#xff0c;在FLOP和I/O成本之间取得平衡&#xff0c;提高模型质量和效率。并且优于PyTorch和FlashAttention-v2。它可以处理更长的序列&#xff0c;并在人工智能应用程序中打开新的可…

【Python百宝箱】Python中的音视频处理: 探索多样化的库和工具

Python中的音视频处理: 探索多样化的库和工具 前言 在数字化时代&#xff0c;音视频处理不仅仅是娱乐产业的需求&#xff0c;还渗透到了教育、医疗、安防等多个领域。Python作为一门强大而灵活的编程语言&#xff0c;为开发人员提供了丰富的资源来处理和分析音视频数据。本文…

SQL Server Profiler基础使用

文章目录 SQL Server Profiler基础使用简介如何打开直接打开Microsoft SQL Server Management Studio工具栏打开 配置跟踪新建跟踪跟踪属性配置常规配置事件选择 启动跟踪跟踪时执行脚本跟踪记录 暂停跟踪停止跟踪 SQL Server Profiler基础使用 简介 一个图形界面工具&#x…

逆矩阵相关性质与例题

1.方阵的行列式&#xff1a;就是将方阵中的每一个元素转换至行列式中。 1.性质一&#xff1a;转置方阵的行列式等于转置前的行列式。&#xff08;对标性质&#xff1a;行列式与它的转置行列式相等&#xff09; 2.性质二&#xff1a;|ka||a|*k的n次方&#xff0c;n为方阵阶数。 …

芯片设计—低功耗isolation cell

&#xff08;一&#xff09;低功耗isolation cell的目的 低功耗架构设计需要前后端拉通规划&#xff0c;前端设计有PMU功耗管理单元&#xff0c;比如A模块电压常开&#xff0c;B模块电压可关断&#xff0c;那么请思考&#xff0c;当B模块关断电压后&#xff0c;B模块输出到A模…

PDF控件Spire.PDF for .NET【转换】演示:将在 C#/VB.NET 中将 PDF 转换为 PCL

本文我们将演示如何通过调用 Spire.PDF 提供的方法 PdfDocument.SaveToStream() 将 PDF 页面转换为 HTML、Word、SVG、XPS、PDF 并将它们保存到流中。并且从Spire.PDF版本4.3开始&#xff0c;它新支持转换定义范围的PDF页面并将其保存到流中。 Spire.Doc 是一款专门对 Word 文…

精益制造中的周转箱和工具柜优势

制造业&#xff08;Manufacturing industry&#xff09;是指机械工业时代利用某种资源&#xff08;物料、能源、设备、工具、资金、技术、信息和人力等&#xff09;&#xff0c;按照市场要求&#xff0c;通过制造过程&#xff0c;转化为可供人们使用和利用的大型工具、工业品与…

大语言模型概述(二):基于亚马逊云科技的研究分析与实践

上期介绍了大语言模型的定义和发展历史&#xff0c;本期将分析基于亚马逊云科技的大语言模型相关研究方向&#xff0c;以及大语言模型的训练和构建优化。 大语言模型研究方向分析 Amazon Titan 2023 年 4 月&#xff0c;亚马逊云科技宣布推出 Amazon Titan 大语言模型。根据…

redis运维(十七)事务

一 redis事务 事务核心参考 ① 基础概念 1、场景引入核心&#xff1a;通过现象思考原因? 2、事务的概念 3、事务四大特性说明&#xff1a; redis只具备部分特性 重点1&#xff1a; 原子性和一致性 重点2&#xff1a; 隔离性和持久性 ② redis的事务 1、基础铺垫备注&…

runapi的学习记录

安装地址 git clone https://github.com/star7th/showdoc.git 默认账号与密码 showdoc 123456 首页 访问地址&#xff1a;http://192.168.51.2:4042/web/#/ 进入ShowDoc首页 登录showdoc文档系统 http://192.168.51.2:4042/web/#/user/login 默认账号密码showdoc/12345…

unity Terrain 性能问题

在实践过程中unity发生进入场景GPU爆显存的情况&#xff0c;经过调查发现是使用Terrain造成的问题&#xff0c;这个问题在使用一个Terrain的时候并不会发生&#xff0c;但是在使用多个时会发生。 似乎在使用过程中Terrain会直接把Terrain的整个地图加载&#xff0c;造成移动设…

​ 一文带你了解多文件混淆加密

​&#x1f512; 一文带你了解多文件混淆加密 目录 &#x1f512; 一文带你了解 JavaScript 多文件混淆加密 ipaguard加密前 ipaguard加密后 ​ &#x1f512; 一文带你了解 JavaScript 多文件混淆加密 JavaScript 代码多文件混淆加密可以有效保护源代码不被他人轻易盗取。…

关闭vscode打开的本地服务器端口

vscode开了本地的一个端口“8443”当本地服务器端口&#xff0c;然后随手把VScode一关&#xff0c;后来继续做发现8443端口已经被占用了。   原来&#xff0c;即便关闭了编译器VScode&#xff0c;服务器依然是被node.exe运行着的。那这个端口怎么才能关掉呢&#xff1f;   …

Kotlin基础——Lambda和函数式编程

Lambda 使用 { } 定义Lamba&#xff0c;调用run运行 run { println(1) }更常用的为 { 参数 -> 操作 }&#xff0c;还可以存储到变量中&#xff0c;把变量作为普通函数对待 val sum { x: Int, y: Int -> x y } println(sum(1, 2))maxBy()接收一个Lambda&#xff0c;传…

EXIT外部中断 HAL库+cubeMX

一.cubeMX外部中断配置 1.系统内核 2.中断管理 3.选择抢占优先级和响应优先级&#xff0c;共有5个等级&#xff0c;在这里就使用库函数编写代码时最常用的2位抢占优先级2位响应优先级。 4.勾选使能选项&#xff0c;后面的两个零&#xff0c;第一个代表抢占优先级的等级&#xf…

用于计算机屏幕安全摄像头系统:Screen Anytime Crack

Screen Anytime 是一款软件&#xff0c;旨在自动将整个用户会话或 PC/服务器/VM/Kiosk 的 /RDP/Citrix/RemoteApp 会话的屏幕活动记录到视频日志文件中&#xff0c;以用于记录、审核和监控目的。通过重播其高度压缩的视频&#xff0c;您可以轻松回顾单台计算机或一组服务器/PC …

基于C#实现并查集

一、场景 有时候我们会遇到这样的场景&#xff0c;比如:M{1,4,6,8},N{2,4,5,7}&#xff0c;我的需求就是判断{1,2}是否属于同一个集合&#xff0c;当然实现方法有很多&#xff0c;一般情况下&#xff0c;普通青年会做出 O(MN)的复杂度&#xff0c;那么有没有更轻量级的复杂度呢…

Vatee万腾科技的独特力量:Vatee数字时代创新的新视野

在数字化时代的浪潮中&#xff0c;Vatee万腾科技以其独特而强大的创新力量&#xff0c;为整个行业描绘了一幅崭新的视野。这不仅是一场科技创新的冒险&#xff0c;更是对未来数字时代发展方向的领先探索。 Vatee万腾将创新视为数字时代发展的引擎&#xff0c;成为推动行业向前的…

ubuntu 安装python3.13

列出 /usr/bin/ 目录下所有以 python 开头的文件和目录 ls /usr/bin/python* 添加Python软件源。您可以通过以下命令将Python的软件源添加到您的系统中 sudo add-apt-repository ppa:deadsnakes/ppa 然后运行以下命令以更新软件包列表&#xff1a; sudo apt-get update 安…