news 2026/4/23 12:49:45

leetcode 885. Spiral Matrix III 螺旋矩阵 III

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 885. Spiral Matrix III 螺旋矩阵 III

Problem: 885. Spiral Matrix III 螺旋矩阵 III

解题过程

防止越界的问题,所以扩展了边界的,将矩阵复制到中间,方向累加的,取模4,长度len在方向上前进len步,当该格子访问过时,才累加长度len++,避免了越界问题

Code

class Solution { public: vector<vector<int>> spiralMatrixIII(int rows, int cols, int rStart, int cStart) { vector<vector<bool>> status( 301, vector<bool>(301, false) ); vector<vector<int>> matrix(301, vector<int>(301, -1)); vector<vector<int>> ret; ret.push_back({rStart, cStart}); rStart += 100; cStart += 100; for(int i = 0; i < rows; i++) { for(int j = 0; j < cols; j++) { matrix[i + 100][j + 100] = 0; } } int len = 1, direction = 1, sum = rows * cols, k, x, y; if(ret.size() == sum) return ret; status[rStart][cStart] = true; while(sum > 0) { k = len; while(k > 0) { x = rStart; y = cStart; if( direction % 4 == 1 ) { ++cStart; } else if( direction % 4 == 2 ) { ++rStart; } else if( direction % 4 == 3 ) { --cStart; } else { --rStart; } if(status[rStart][cStart] == true) { rStart = x; cStart = y; direction = (direction - 1 + 4) % 4; len++; k = 1; continue; } if(matrix[rStart][cStart]==0) { ret.push_back({rStart-100, cStart-100}); if(ret.size() == sum) { return ret; } } status[rStart][cStart] = true; k--; } direction++; } return {{}}; } };

官方题解的答案

class Solution { public: vector<vector<int>> spiralMatrixIII(int rows, int cols, int rStart, int cStart) { vector<vector<int>> ret = {{rStart, cStart}}; int sum = rows * cols; if(sum == 1) { return ret; } for(int i = 1; i < rows * cols * 2; i++) { if( (i&1)==1 ) { for(int j = 0; j < i; j++) { cStart++; if(rStart>=0 && rStart < rows && cStart>=0 && cStart < cols) { ret.push_back({rStart, cStart}); } } for(int j = 0; j < i; j++) { rStart++; if(rStart>=0 && rStart < rows && cStart>=0 && cStart < cols) { ret.push_back({rStart, cStart}); } } } else { for(int j = 0; j < i; j++) { cStart--; if(rStart>=0 && rStart < rows && cStart>=0 && cStart < cols) { ret.push_back({rStart, cStart}); } } for(int j = 0; j < i; j++) { rStart--; if(rStart>=0 && rStart < rows && cStart>=0 && cStart < cols) { ret.push_back({rStart, cStart}); } } } if(ret.size() == sum) { return ret; } } return {{}}; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:34:29

基于深度学习的轮胎缺陷智能无损检测

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导&#xff0c;毕业论文、期刊论文经验交流。✅ 专业定制毕设、代码✅ 成品或定制&#xff0c;查看文章底部微信二维码&#xff08;1&#xff09;轮胎缺陷图像数据集构建与检测难点分析轮胎作为汽车与…

作者头像 李华
网站建设 2026/4/23 9:53:40

致密储层压裂效果评价深度学习方法【附代码+数据】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导&#xff0c;毕业论文、期刊论文经验交流。✅ 专业定制毕设、代码✅ 成品或定制&#xff0c;查看文章底部微信二维码&#xff08;1&#xff09;阵列声波测井数据集构建与数据增强策略水力压裂技术是…

作者头像 李华
网站建设 2026/4/23 11:36:22

大模型微调技术入门

一、 什么是大模型微调&#xff1f; 要理解微调&#xff0c;首先要区分预训练和微调两个阶段。 预训练是大模型的“基础教育”阶段&#xff1a;开发者用海量无标注的通用数据&#xff08;书籍、网页、论文等&#xff09;训练模型&#xff0c;让它学习语言的底层规律&#xff0c…

作者头像 李华
网站建设 2026/4/23 9:53:42

Vue3 响应式系统——ref 和 reactive

一、Vue3 响应式系统概述 Vue3 响应式包 vue/reactivity&#xff0c;核心由三部分构成&#xff1a; 数据 (Proxy Object) —— 依赖收集 Track —— 触发更新 Trigger —— Effect 执行更新核心目标&#xff1a; 拦截读取和设置操作收集依赖在数据变化时重新触发相关副作用…

作者头像 李华
网站建设 2026/4/23 11:21:15

互联网大厂Java面试场景:从Spring Boot到微服务的关键技术问答

面试场景 在一家互联网大厂的会议室中&#xff0c;程序员超好吃正紧张地坐在面试官对面。面试官是一位眉头紧锁的技术专家&#xff0c;准备对超好吃进行一场技术深度考察。面试围绕内容社区与UGC场景展开。第一轮提问&#xff1a;基本技术点 面试官&#xff1a;我们公司主要做内…

作者头像 李华
网站建设 2026/4/23 10:42:40

基于sabl-cascade-rcnn_r101_fpn_1x_coco的葡萄成熟度检测项目_1

1. 基于sabl-cascade-rcnn_r101_fpn_1x_coco的葡萄成熟度检测项目 1.1. 项目概述 &#x1f347;&#x1f347;&#x1f347;大家好呀&#xff01;今天要和大家分享一个超级实用的葡萄成熟度检测项目&#xff01;这个项目基于sabl-cascade-rcnn_r101_fpn_1x_coco模型&#xff…

作者头像 李华