leetcode分类刷题:矩阵顺时针模拟
1、这种题目是对代码熟练度考察,模拟顺时针建立或访问矩阵,需要注意矩阵是否为方阵
2、具体思路:以圈数为循环条件,每一圈都坚持左闭右开的区间规则;当小的行列值为奇数,最后一圈为一行或一列或一个数字的不完整圈
3、细节:把 起始圈的上下左右边界 和 i,j标记矩阵的赋值位置 放在圈数循环外部,以方便完整圈数遍历完后使用这些变量;同时,圈数循环内部的最后要对这些变量进行更新
59. 螺旋矩阵 II
from typing import List
'''
59. 螺旋矩阵 II
题目描述:给你一个正整数 n ,生成一个包含 1 到 n^2 的所有元素,且元素按顺时针顺序螺旋排列的 n i n 正方形矩阵 matrii 。
示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]
题眼:代码熟练度考察,模拟顺时针建立矩阵,注意是方阵,复杂度降低了些
思路:以圈数为循环条件,每一圈都坚持左闭右开的区间规则;当n为奇数,恰好留了一个中心元素待更新
注意把 起始圈的上下左右边界 和 i,j标记矩阵的赋值位置 放在圈数循环外部,以方便圈数遍历完后使用这些变量;同时,圈数循环内部的最后要对这些变量进行更新
'''class Solution:def generatedMatrii(self, n: int) -> List[List[int]]:result = [[0] * n for _ in range(n)]# 以圈数为循环条件,每一圈都坚持左闭右开的区间规则count = 1up, down, left, right = 0, n - 1, 0, n - 1 # 起始圈的上下左右边界i, j = up, left # i,j标记矩阵的赋值位置,初始值为左上角坐标for _ in range(n // 2): # 总圈数为 n // 2while i == up and j < right: # 上result[i][j] = countj += 1count += 1while i < down and j == right: # 右result[i][j] = counti += 1count += 1while i == down and j > left: # 下result[i][j] = countj -= 1count += 1while i > up and j == left: # 左result[i][j] = counti -= 1count += 1# 更新圈的上下左右边界up, down, left, right = up + 1, down - 1, left + 1, right - 1i, j = up, left # i,j标记矩阵的赋值位置,初始值为左上角坐标# 当n为奇数,恰好留了一个中心元素待更新if n % 2 == 1:result[up][left] = countreturn resultif __name__ == "__main__":obj = Solution()while True:try:n = int(input().strip().split('=')[1])print(obj.generatedMatrii(n))except EOFError:break
54. 螺旋矩阵
from typing import List
'''
54. 螺旋矩阵
题目描述:给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]
题眼:代码熟练度考察,模拟顺时针返回矩阵元素,注意不是方阵,有点复杂度
思路:以圈数为循环条件,每一圈都坚持左闭右开的区间规则;当小的行列值为奇数,最后一圈为一行或一列或一个数字的不完整圈
注意把 起始圈的上下左右边界 和 i,j标记矩阵的赋值位置 放在圈数循环外部,以方便圈数遍历完后使用这些变量;同时,圈数循环内部的最后要对这些变量进行更新
'''class Solution:def spiralOrder(self, matrix: List[List[int]]) -> List[int]:m, n = len(matrix), len(matrix[0])result = []# 以圈数为循环条件,每一圈都坚持左闭右开的区间规则up, down, left, right = 0, m - 1, 0, n - 1 # 起始圈的上下左右边界i, j = up, left # i,j标记矩阵的赋值位置,初始值为左上角坐标for _ in range(min(m, n) // 2): # 总圈数为 小的行列值除以2while i == up and j < right: # 上result.append(matrix[i][j])j += 1while i < down and j == right: # 右result.append(matrix[i][j])i += 1while i == down and j > left: # 下result.append(matrix[i][j])j -= 1while i > up and j == left: # 左result.append(matrix[i][j])i -= 1# 更新圈的上下左右边界up, down, left, right = up + 1, down - 1, left + 1, right - 1 # 起始圈的上下左右边界i, j = up, left # i,j标记矩阵的赋值位置,初始值为左上角坐标# 当小的行列值为奇数,最后一圈为一行或一列或一个数字的不完整圈if min(m, n) % 2 == 1:if up == down and left == right: # 一个数字result.append(matrix[up][left])elif up != down and left == right: # 一列,对应的列索引为leftfor k in range(up, down + 1):result.append(matrix[k][left])elif up == down and left != right: # 一行,对应的行索引为upfor k in range(left, right + 1):result.append(matrix[up][k])return resultif __name__ == "__main__":obj = Solution()while True:try:in_line = input().strip().split('=')matrix = []for row in in_line[1].strip()[1: -1].split(']')[: -1]:matrix.append([int(n) for n in row.split('[')[1].split(',')])print(obj.spiralOrder(matrix))except EOFError:break
相关文章:
leetcode分类刷题:矩阵顺时针模拟
1、这种题目是对代码熟练度考察,模拟顺时针建立或访问矩阵,需要注意矩阵是否为方阵 2、具体思路:以圈数为循环条件,每一圈都坚持左闭右开的区间规则;当小的行列值为奇数,最后一圈为一行或一列或一个数字的不…...
Java8新特性整理记录
1、list实体集合根据某个属性分组后求和 方法一: list.stream().collect(Collectors.groupingBy(e -> e.getId())).values().stream().map(d -> {DemoEntity sampleData d.get(0);sampleData.setPremium(d.stream().map(s -> new BigDecimal(s.getPrem…...
43.227.196.1 RAID技术有什么意义?
RAID(Redundant Array of Inexpensive Disks)技术是一种数据存储技术,它通过将多个硬盘组合在一起,来提高数据存储的性能、可靠性和容错性。 RAID技术的主要意义包括: 提高数据读写性能:RAID技术可以将多…...
c++ qt--信号与槽(一) (第三部分)
c qt–信号与槽(一) (第三部分) 一.用qt自带的方法添加信号槽 1.第一种 1.如何添加 2.在何处进行绑定 2.第二种 1.如何添加 2.在何处进行绑定 而且会在mainwindow.h中添加槽函数的声明,在mainwindow.cpp中添加槽函数的定义 在mainwindow…...
LLM学习《Prompt Engineering for Developer》
Prompt 如何构造好的Prompt 分割符:分隔符就像是 Prompt 中的墙,将不同的指令、上下文、输入隔开,避免意外的混淆。你可以选择用 ,“”",< >, ,: 等做分隔符,只要能明确…...
nginx-获取客户端IP地址
上有服务器与客户端中间是有nginx代理服务器的,上游服务器如何获取客户端真实ip地址? nginx代理服务器设置X-Forwarded-For的header参数,代理服务器通过remote_addr获取客户端ip地址,将ip地址写入nginx代理服务器的X-Forwarded-Fo…...
Redis 高可用之集群搭建和数据分片
Redis 高可用之集群搭建和数据分片 一、简介1. Redis 集群:2. 集群搭建: 二、Redis 集群搭建1. 单机 Redis 升级为 Redis Clustera. 搭建方法b. 搭建方式说明 2. 环境准备3. 配置修改4. 启动集群 三、Redis数据分片的实现Redis数据分片概念说明数据分片的…...
兄弟,王者荣耀的段位排行榜是通过Redis实现的?
目录 一、排行榜设计方案1、数据库直接排序2、王者荣耀好友排行 二、Redis实现计数器1、什么是计数器功能?2、Redis实现计数器的原理(1)使用INCR命令实现计数器(2)使用INCRBY命令实现计数器 三、通过Redis实现“王者荣…...
Linux系统编程--文件编程--打开创建文件
创建文件需要包含以下3个头文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 打开、创建文件有以下3个API open的返回值——文件描述符(索引作用),是一个小的非负整数 int open(const char*pathn…...
http协议与apache
http概念: 互联网:是网络的网络,是所有类型网络的母集 因特网:世界上最大的互联网网络。即因特网概念从属于互联网概念 万维网:万维网并非某种特殊的计算机网络,是一个大规模的、联机式的信息贮藏库&…...
搜索二叉树的算法解析与实例演示
目录 一.搜索二叉树的特性与实现1.特点2.实现二.搜索二叉树的性能 一.搜索二叉树的特性与实现 1.特点 二叉搜索树是特殊的二叉树,它有着更严格的数据结构特点: (1)非空左子树的所有键值小于其根结点的键值。 (2&…...
研磨设计模式day13组合模式
目录 场景 不用模式实现 代码实现 有何问题 解决方案 代码改造 组合模式优缺点 思考 何时选用 场景 不用模式实现 代码实现 叶子对象 package day14组合模式;/*** 叶子对象*/ public class Leaf {/*** 叶子对象的名字*/private String name "";/**…...
Linux命令(73)之zip
linux命令之zip 1.zip介绍 linux命令zip是用来压缩文件及解压缩文件名称后缀为".zip"的文件 2.zip用法 zip [参数] filename[.zip] zip常用参数 参数说明-r压缩递归处理-d从压缩文件内删除指定的文件-T检查备份文件是否正确无误-u更换较新的文件到压缩文件内-q不…...
深入理解Reactor模型的原理与应用
1、什么是Reactor模型 Reactor意思是“反应堆”,是一种事件驱动机制。 和普通函数调用的不同之处在于:应用程序不是主动的调用某个 API 完成处理,而是恰恰相反,Reactor逆置了事件处理流程,应用程序需要提供相应的接口并…...
微信小程序开发的投票评选系统设计与实现
摘要 越来越多信息化融入到我们生活当中的同时,也在改变着我们的生活和学习方式,当然,变化最明显的除了我们普通民众之外,要数高校学生的生活方式以及校园信息化的变革。智慧是改变生活和生产的一种来源,那么智慧的体…...
【校招VIP】算法考点之堆排
考点介绍: 排序算法属于数据结构和算法的基础内容,并且也是大厂笔试中的高频考点。 堆排序是使用一棵树存储序列这个课树只保证跟节点是这棵树中的最小值,但并不保证其他节点是按顺序的。因此他的排序是每次从堆中取得堆顶,取得 n…...
关于yarn安装时报“node“ is incompatible with this module的解决办法
前提: 在用vue写一个h5页面时,当在用yarn安装时,提示如下错误: The engine “node” is incompatible with this module. Expected version "^14.18.0 || ^16.14.0 || >18. 解决办法 我是使用命令忽略错误:…...
开源利器推荐:美团动态线程池框架的接入分享及效果展示
前言 蛮早前有些过关于线程池的使用及参数的一些参考配置,有兴趣的可以翻看以前的博文,但终究无法解决线程池的动态监控和实时修改。 以前读过美团早期发布的动态线程池框架的思路相关文章,但想要独自实现不是一件容易的事。 去年,…...
Linux目录结构与文件管理 (02)(四)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、查看文件内容 二、创建文件 三、删除文件 四、 移动文件 五、复制文件 六、编辑文件内容 总结 前言 今天是在昨天的基础上继续学习,主要…...
对1GHz脉冲多普勒雷达进行快速和慢速处理生成5个移动目标的距离多普勒图研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
uni.uploadFile上传 PHP接收不到
开始这样,后端$file $request->file(file);接收不到 数据跑到param中去了 去掉Content-Type,就能接收到了 param只剩下...
2023年高教社杯 国赛数学建模思路 - 复盘:光照强度计算的优化模型
文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米,宽为12米&…...
Netty简易聊天室
文章目录 本文目的参考说明环境说明maven依赖日志配置单元测试 功能介绍开发步骤 本文目的 通过一个简易的聊天室案例,讲述Netty的基本使用。同时分享案例代码。项目中用到了log4j2,junit5,同时分享这些基础组件的使用。项目中用到了awt&…...
Flutter Cannot run with sound null safety, because the following dependencies
flutter sdk 版本升级到2.0或者更高的版本后,运行之前的代码会报错 Error: Cannot run with sound null safety, because the following dependencies dont support null safety:- package:flutter_swiper- package:flutter_page_indicator- package:transformer_p…...
利用改进的遗传算法(种群隔离与个体迁移)mpi并行解决tsp问题
序 关于tsp问题的概述以及如何使用遗传算法进行求解已经在上一篇文章中说明了:遗传算法解决TSP问题. 但是,作为一种演化算法,遗传算法还存在着许多问题,比如早熟的情况,很容易在算法前期就已经收敛了,大量…...
【C++】—— C++11之线程库
前言: 在本期,我将给大家介绍的是 C11 中新引进的知识,即关于线程库的相关知识。 目录 (一)线程库的介绍 1、线程库的由来 2、线程库的简单介绍 (二)线程函数参数 (三…...
前端面试:【性能优化】前端缓存、CDN、懒加载和预加载
亲爱的前端开发者,Web性能对用户体验至关重要。如果你想让你的网站更快、更具吸引力,就需要关注前端性能优化。在这篇文章中,我们将深入探讨四个关键的性能优化策略:前端缓存、CDN(内容分发网络)、懒加载和…...
民族传统文化分享系统uniapp 微信小程序
管理员、用户可通过Android系统手机打开系统,注册登录后可进行管理员后端;首页、个人中心、用户管理、知识分类管理、知识资源管理、用户分享管理、意见反馈、系统管理,用户前端;首页、知识资源、用户分享、我的等。 本系统的使用…...
netty(二):NIO——处理可写事件
处理可写事件 什么情况下需要注册可写事件? 在服务端一次性无法把数据发送完的情况下,需要注册可写事件 服务端一次性是否能够把数据全部发送完成取决于服务端的缓冲区大小,该缓冲区不受程序控制 注册可写事件的步骤 判断ByteBuffer是否仍…...
PHP基本语法解析与应用指南
PHP(Hypertext Preprocessor)是一种广泛应用的开源脚本语言,特别适用于Web开发。本文将深入探讨PHP的基本语法,包括变量、数据类型、运算符、控制流等方面的内容。我们将详细介绍每个主题的基本概念、语法规则和常见应用ÿ…...
西安网约车公司排行榜/重庆百度推广优化
小哥哥、小姐姐,你们好,请把手伸出来,我给你们点东西。 1、JavaScript异步编程 同步与异步回调函数promisegeneratorasyncawait2、写一个符合规范的promise库 1、JavaScript异步编程 1-1、同步与异步 我们都知道js是单线程语言,这…...
企业网站建设基本流程/重庆seo服务
1、禁止复制文本html页面增加<style>*{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;} </style>复制代码2、禁止img标签增加样式<img style"pointer-even…...
图片设计 五星级酒店网站/天门网站建设
python3 数组(列表)初始化 1. 初始化一个定长的数组 有时需要预定义一个定长的数组,并给每个元素赋值 方法1: python3中代码如下:#codingutf-8 item PythonTab array [item for v in range(10)] #把 item 的值赋给 range()迭代器的每个元素…...
长沙网站优化页面/关键词排名优化易下拉技术
IQ使命 目录: IQ使命 Rapa Nui 复活岛(智力大逃亡)攻略 IQ使命 London 伦敦(一笔画)攻略 IQ使命 Luxor 埃及卢克索(华容道) 攻略 IQ使命 Antwerp 安特卫普(选宝石放木块&am…...
怎么做网站官方电话/整合营销什么意思
我在Windows上试用Git 。 我到了尝试“git commit”的地步,我收到了这个错误:终端是愚蠢的,但没有定义VISUAL或EDITOR。 请使用-m或-F选项提供消息。所以我想出了我需要一个名为EDITOR的环境变量。 没问题。 我把它设置为指向记事本。 这几乎…...
哪些b2b网站做游戏机比较好/seo高级优化方法
1、首先他们底层数据结构不一样,ArrayList底层结构是数组,LinkedList底层结构是链表; 2、数据结构决定了,ArrayList在查询上的效率较高,而LinkedList在删除和添加上的效率更高;(需要注意的一点是…...