【LeetCode 54】螺旋矩阵
问题描述解法1、模拟参考自【LeetCode 54】螺旋矩阵-CSDN博客int *spiralOrder(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) { static const int dirs[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; int *ans malloc(sizeof(*ans) * 100); int row matrixSize; int col matrixColSize[0]; int num row * col; int i 0; int j 0; int k 0; int h 0; *returnSize num; while (num--) { /* 记录元素并标记为已记录 */ ans[k] matrix[i][j]; matrix[i][j] 0xff; /* 下一步可能的位置 */ int curr i dirs[h][0]; int next j dirs[h][1]; /* 判断下一步可能的位置是否合理越界或已记录则右转90° */ if (curr 0 || curr row || next 0 || next col || matrix[curr][next] 0xff) h (h 1) 0x03; // (x % 4) - (x 0x03) /* 下一步的位置 */ i dirs[h][0]; j dirs[h][1]; } return ans; }矩阵 dirs[4][2] 表示四方向偏移数组存储上下左右四个移动增量常用于网格类算法。具体含义如下下标上解的hdx, dy移动方向0(0, 1)右列 11(1, 0)下行 12(0,-1)左列 - 13(-1,0)上行 - 1if 的判断条件拆解螺旋遍历数组时若下一格坐标越界或下一格已经走过则顺时针旋转90°h%41.curr 0下一步行坐标小于 0继续向上则将走出矩阵上边界2. curr row下一步行坐标 ≥ 总行数继续向下则将走出矩阵下边界3. next 0下一步列坐标小于 0继续向左则将走出矩阵左边界4. next col下一步列坐标 ≥ 总列数继续向右则将走出矩阵右边界5. matrix[curr][next] 0xff下一步坐标合法且没有越界但之前已经遍历过(h % 4) → (h 0x03)对一个正整数取4的余数本质就是截取其二进制的最后两位用位运算更快是常见的优化方式。2、建立并维护边界int* sprialOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize) { if (!matrix) return NULL; int top 0, btm matrixSize - 1, left 0, right matrixColSize[0] - 1; *returnSize 0; int* arr malloc(sizeof(int) * matrixSize * matrixColSize[0]); while (top btm left right) { /* 左-右访问第top行 */ for (int i left; i right; i) arr[(*returnSize)] matrix[top][i]; top; /* 上-下访问第right列 */ for (int i top; i btm; i) arr[(*returnSize)] matrix[i][right]; right--; /* 右-左访问第btm行需要判断即将遍历的这条边是否存在 */ if (top btm) { for (int i right; i left; i--) arr[(*returnSize)] matrix[btm][i]; btm--; } /* 下-上访问第left列 */ if (left right) { for (int i btm; i top; i--) arr[(*returnSize)] matrix[i][left]; left; } } return arr; }【LeetCode 54】螺旋矩阵-CSDN博客解法2可看作是上解的优化方案二者的解决思路比较相似。

相关新闻

认识VMware与shell图形化工具

认识VMware与shell图形化工具

版本测试运用:CentOS-7-x86_64-Minimal-20091,利用种子下载光盘文件2,配置虚拟机,加载光盘3,登录root用户4,ip addr查看ip,配置shell。利用图形界面或者指令ssh root5,练习常用的非高…

2026/7/23 23:58:29 阅读更多 →
【Unity学习】

【Unity学习】

文章目录c#脚本基本语句一、游戏启动的基本语句二、游戏运行的基本语句1.游戏运行的基本语句2.对物体的相关操作三、Unity组件的一些方法1.Rigidbody组件2.Collider组件3.Audio Source组件四、Unity脚本常用的方法实现1.角色移动和视角移动c#脚本基本语句 一、游戏启动的基本语…

2026/7/23 23:58:29 阅读更多 →
端粒延长29%?从“以色列35人”到“中国136人”:高压氧抗衰大样本临床研究的数据解读

端粒延长29%?从“以色列35人”到“中国136人”:高压氧抗衰大样本临床研究的数据解读

当“祖传文献”迎来中国验证2020年,以色列特拉维夫大学Shai Efrati团队在《Aging》发表研究:35名64岁以上老人经60次高压氧治疗,部分免疫细胞端粒长度增加超20%,衰老T细胞减少近37%。这项研究从此成为高压氧抗衰领域的“祖传文献”…

2026/7/23 23:57:28 阅读更多 →

最新新闻

《你别回头找我》为何能成为可传播的试听入口

《你别回头找我》为何能成为可传播的试听入口

《你别回头找我》写的是一种状态:《你别回头找我》把“你别”写成可听见的状态:拒绝有时是对自己的保护。听的人多半不是旁观,而是刚好走在同类路口,更适合的播放场是关掉通知、拒绝一次聚会、把话说断的路口。场景立住&#xff0…

2026/7/24 0:11:33 阅读更多 →
基于深度强化学习的电池储能系统优化控制实践

基于深度强化学习的电池储能系统优化控制实践

1. 项目概述在能源转型的大背景下,电池储能系统(BESS)作为平衡电网供需的关键技术,其运行效率直接影响着整个电力系统的经济性和稳定性。传统基于规则的充放电策略往往难以应对复杂多变的电网环境,而深度强化学习(DRL)因其强大的环境适应能力…

2026/7/24 0:10:33 阅读更多 →
影刀RPA 自动化舆情监控:关键词预警与报告生成

影刀RPA 自动化舆情监控:关键词预警与报告生成

影刀RPA 自动化舆情监控:关键词预警与报告生成 作者:林焱 写在前面 品牌负面舆情一旦爆发,几个小时内可能蔓延全网。靠人工每天刷微博、知乎、新闻,根本来不及。影刀可以帮你搭一套724小时的舆情监控系统:定时采集多…

2026/7/24 0:10:33 阅读更多 →
ArkUI Provider 和 Consumer 乱用怎么办:中式美食同类多层筛选页为什么别一路传参数

ArkUI Provider 和 Consumer 乱用怎么办:中式美食同类多层筛选页为什么别一路传参数

先把相关概念说清楚知识点在这个问题里怎么看自定义组件冻结功能用来写多页面栈、TabContent、LazyForEach 和 BuilderNode 混用时的刷新边界状态管理 V1 向 V2 迁移用来拆 State 到 Local、Param、Once、Event 的迁移判断Provider / Consumer用来解释跨层级双向同步&#xff0…

2026/7/24 0:10:33 阅读更多 →
【K8S 运维实战】11-资源管理Requests与Limits

【K8S 运维实战】11-资源管理Requests与Limits

资源管理:Requests/Limits 与 QoS 分级 一句话定位:为什么设了 Limits 还是被 OOM QoS 三级怎么用 ResourceQuota 实战。 写在前面 “我明明设了 memory limit 4G,Pod 还是 OOMKilled 了,这是什么玄学?”——这是我遇到过最经典的资源管理困惑。还有一类:“节点资源没用满,…

2026/7/24 0:10:33 阅读更多 →
OpenClaw+Kimi K2.5+Moltbook企业级AI工作流部署指南

OpenClaw+Kimi K2.5+Moltbook企业级AI工作流部署指南

1. OpenClawKimi K2.5Moltbook部署方案概述这个组合堪称当前最强大的AI工作流解决方案之一。OpenClaw作为自动化控制中枢,Kimi K2.5提供核心AI能力,Moltbook则负责交互界面呈现。三者的结合可以打造出一个智能程度极高的工作助手系统。我在实际部署过程中…

2026/7/24 0:09:32 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻