No.209 - LeetCode[54] Spiral Matrix - 矩阵蛇形输出 - Coding基础

Leetcode | C++ 59-generateMatrix 题目分析 输出一个n*n的蛇形矩阵,例如n=3时输出 [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] 题解思路 先清空矩阵,把数字从小到大填进去,那么就是一直往前走的一条线,每次这条线到尽头或者到一个填过的点就右转(初始在[0,0]位置方向向右)。那么就可以直接拿x方向的增量和y方向的增量来模拟,每次试着从上一次的增量方向前进,如果到了边界外或者到过的点,就修正方向(右转),并继续前进,直至填的数字大于n*n。 如n=2的情况,初始化: [0, 0], [0, 0] 当前 阅读详情

直接用一个等大矩阵来染色比较好写。

不用额外空间,写起来就比较麻烦。

核心思想,每一层加loc超容判断,a,b两个方向的游标。

/*
 * @lc app=leetcode id=54 lang=cpp
 *
 * [54] Spiral Matrix
 */

// @lc code=start
class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        if(matrix.size() <= 0){
            return *(new vector<int>);
        }
        int M = matrix.size();
        int N = matrix[0].size();
        int T = N*M;
        vector<int> ans(T,0);
        int loc = 0;
        int a = 0 , b = 0;
        
        // 层
        int L = (min(N,M)+1)/2;
        for(int i=0;i<L;i++){
            // 上一层
            while(loc < T && b < N-1-i){
                ans[loc++] = matrix[a][b++];
            }
            // 右一层
            while(loc < T && a < M-1-i){
                ans[loc++] = matrix[a++][b];
            }
            // 下一层
            while(loc < T && b > i){
                ans[loc++] = matrix[a][b--];
            }
            // 左一层
            while(loc < T && a > i){
                ans[loc++] = matrix[a--][b];
            }
            a++;b++;
        }
        if( loc < T) ans[loc++] = matrix[M/2][N/2];
        return ans;
    }
};
// @lc code=end
应用处理器(AP)、系统级芯片(SoC)与微控制器(MCU)的区别与联系 阅读详情

相关推荐

电机驱动技术中关于磁阻转矩生成的理解

正交在物理学和数学中指的是两个方向或两个向量之间的夹角为90°(直角)。在图中,当气隙磁场的轴线与转子轴线的夹角为90°时,我们称它们为正交。转子磁极的方向。通常由转子的磁极中心指向另一极的连线表示。转子轴线用图示中的d 轴表示。通过对定子、转子、气隙磁场、磁力线的理解,我们可以清晰地分析不同角度下电磁转矩的方向。这种分析不仅有助于电机的理论学习,还能为实际设计提供重要参考。掌握这些基础知识后,可以更好地理解电机工作原理及优化其性能。

weixin_48327795的博客 2074

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 365

SAP SD实战:用BADI_SLS_HEAD_SCR_CUS给销售订单VA01/VA02加自定义字段(附完整函数组代码)

本文详细解析了在SAP SD模块中如何利用BADI_SLS_HEAD_SCR_CUS实现销售订单(VA01/VA02)的屏幕增强,包括数据结构设计、函数组创建和BADI接口实现。通过实战案例和完整代码,帮助开发者掌握在SAPMV45A标准流程中添加自定义字段的关键技术,提升业务定制化能力。

weixin_27015733的博客 369

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等) 题目描述: 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: - s = s1 + s2 + ... + sn - t = t1 + t2 + ... + tm - |n - m| <= 1 - 交错 是 s1 + t

huayimenghan的博客 209

EPLAN 电气制图(六):结构盒与设备管理器核心概念(基础知识选看)

结构盒是 EPLAN 中用于标识元件安装位置的逻辑容器,非实际设备或黑盒,仅用于原理图中划分功能区域或物理位置(如 “柜内”“柜外”)。标识符设置:在 “显示设备标识符” 中输入位置代号(如 “+ 柜外”),完整格式为 “= 高层代号 + 位置代号”;筛选与定位:通过 “筛选器” 按类别(如电机、接触器)快速查找设备,右键 “转到(图形)” 可高亮定位图纸中的元件;设备保护:重要设备可启用保护(【项目数据】→【设备】→【启用设备保护】),防止误删除(显示橙色圆圈标记)。

电工 1057

药物对接仿真软件:HADDOCK_(16).实践项目:抗体-抗原对接案例

定义分子结构文件。

kkchenjj的博客 580

LeetCode 每日一题 2026/11/2-2026/11/8

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步

AlphaTao的博客 176

组态王的日历时间控件脚本

日期时间控件中的脚本中在小于10的月份和天数前必须要加上0,这是由首字符对比机制规定的,首字母相同,就不再不做对比了,比如1和11,是一样的。首字母不同,再比较下一位。 float Ayear1; float Amonth1; float Aday1; string temp1; Ayear1=sd.Year; Amonth1=sd.Month; Aday1=sd.Day; temp1=StrFromInt( Ayear1, 10 ); if(Amonth1<10) temp1=temp1+"-0"+

逍遥子的博客 5717

Hash表:两数之和、字母异位词分组、最长连续序列 [力扣 Hot100]

三道高频哈希表应用题:两数之和(利用HashMap快速查找补数)、字母异位词分组(排序后作为键分组)、最长连续序列(通过HashSet去重并仅从序列起点扩展)。核心思想均为借助哈希结构优化查找效率,避免重复计算。同时提及双指针等其他解法思路,体现算法设计中“空间换时间”的典型策略。

2403_87560480的博客 221

198、影像系统设计评审流程:从需求评审到 EVT、DVT、PVT 各阶段的关注重点

本文详细介绍了影像系统从需求评审到EVT、DVT、PVT各阶段的设计评审流程及关键点。作者通过实际案例(如IMX766模组偏紫问题)强调硬件工艺的重要性,指出影像系统是功能定义与物理实现的反复拉锯过程。文章分阶段解析:需求评审需将模糊需求转化为物理参数;架构评审要明确接口定义和时序约束;EVT阶段重点关注模组一致性和基础链路;DVT阶段需平衡算法调优与硬件验证;PVT阶段则以量产一致性为核心。最后提出建立"边界条件确认表"和"健康度看板"等实用建议,强调工程师需具备从表象追溯硬件根源的物理直觉。全文贯穿实战

sundong_81的博客 218

6-2 GPU GART 绑定机制与 TLB 失效

本文详细解析了AMD GPU的GART(Graphics Address Remapping Table)绑定机制实现。主要内容包括: 绑定流程:从ttm_tt_bind()到硬件PTE更新的完整调用链,重点分析amdgpu_gart_bind()函数实现。 关键函数: amdgpu_gart_bind():执行安全检查、记录映射关系、更新页表等操作 amdgpu_gart_map():将CPU页映射为多个GPU页并填充PTE amdgpu_gmc_set_pte_pde():处理硬件特定的PTE格式 内存

图形/计算GPU的驱动与虚拟化技术分享园地 2655

力扣73 矩阵置零

该解法通过标记含0的行和列来实现矩阵置零。遍历矩阵,用布尔数组记录有0的行和列;再遍历一次,若当前行或列被标记,则置为0。时间复杂度O(mn),空间复杂度O(m+n)。

Pniubi的博客 24

高级用法:LangChain 安全防护(Guardrails)

在调用开始时校验请求,可做关键词过滤、身份校验、限流等。= "human":return {}],# 使用],= "human":return {}],

Long_像风一样自由 316

LeetCode Hot 100 二叉树专题(三):BST 二叉搜索树与右视图(Java)

本专题主线:三题(98 / 230 / 199)共用两把钥匙——BST 的中序序列严格递增,以及遍历中的"层"与"深度"标记。看懂这两点,三题共用一套模板。 结构约定:每题统一分三部分——①题目分析与解题思路(含易错点辨析);②常见解法(附代码)及讲解;③知识点总结。

2401_88612756的博客 670

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LeetCode 3926. 统计有效单词的出现次数【分组循环】

核心思想:用分组循环,一趟遍历字符串,把一个个单词切出来,丢进哈希表统计频次。,先把所有片段拼接成完整文本字符串。,依次返回每个单词在文本里的出现次数。难点:内层循环的判断条件,区分。

2503_92676540的博客 172

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

力扣第526场周赛心得理解

思路:因为题目要求尽可能求出最小的最大值,而满足要求最小公约数为2,作为题目要求最小的最大值,先去求出它的最大公约数再通过value判断最左边是否大于0,以及value本身是否大于0,而index的位置只能为中间或者最右边,所以最后输出只能是value本身或者在这个基础上加相隔相应距离次数的结果。两个整数,是指将第二个整数的所有十进制数位拼接在第一个整数的所有十进制数位之后。如果不存在这样的数组,返回 -1。4097. 合并整数后的最小值。返回所有合并后得到的整数中的。合并,依此类推,直到将。

目前主攻编程,目标是把屏幕上的红波浪线变成流畅运行的程序♪(^∀^●)ノシ 206

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LeetCode100 94. 二叉树的中序遍历

中序遍历(左根右)通过栈实现,模拟递归过程。从根开始,不断向左走并压栈,直到左子树为空;弹出栈顶节点访问(根),转向其右子树重复流程。样例:1→2→3,遍历顺序为1→3→2。时间复杂度O(n),空间复杂度O(h)。

Shaoxingzong的博客 144

【算法学习笔记】LeetCode 15:三数之和(排序 + 双指针)

使用sort()对数组进行排序。理解排序后双指针的移动原理。使用外层循环固定一个数字。使用左右指针寻找另外两个数字。使用continue和while实现去重。理解的执行逻辑。将三层循环优化为排序 + 双指针,使时间复杂度从 O(n³) 降低到 O(n²)。

aqiu111111的博客 158

力扣hot100-最长连续序列

改了好多次得到了最终版,难在总有想不到的情况,需要提交很多很多次,把这些想不到的情况一一考虑进去。然后今天学到一个事:C++ 要求。,中间不能有其他语句。

m0_61483444的博客 31

LeetCode100 15. 三数之和

本题通过排序+双指针优化三数之和。先对数组排序,外层遍历固定第一个数,内层用左右指针查找另两个数,使三数之和为0。通过剪枝(当前数>0则终止)和去重(跳过重复元素)提升效率。相比暴力或哈希法,该方法时间复杂度为O(n²),空间O(1),更高效优雅。

Shaoxingzong的博客 324

LeetCode hot 100 — 226. 翻转二叉树 | 101. 对称二叉树

自己稀里糊涂写了一版本居然还对了,我觉得我的思想就是很简单,这里就是要交换每一个节点的左右子树,所以套用了一下之前的中序遍历的迭代套路。一直在return False,但是没有给真正的正确答案一个出口(注意递归调用中出口 / 返回值很重要,或者说是最重要的)差一步美满....用的递归的写法,差一点点就满分了,先给出自己最开始写的代码。这道题的本质是对每一个节点执行相同的操作,并且交换哪个节点在先并不重要。你可以运用递归和迭代两种方法解决这个问题吗?,翻转这棵二叉树,并返回其根节点。给你一个二叉树的根节点。

Canmido的博客 135

LeetCode100+拓扑排序+多源BFS+矩阵置零

摘要(≤150字): 三题均考察算法优化与经典思想。矩阵置零通过利用首行首列作标记,实现O(1)空间原地操作;腐烂橘子问题用BFS模拟感染过程,结合新鲜橘子计数判断是否可全部腐烂;课程表问题通过拓扑排序检测有向图是否存在环,基于入度数组与邻接表判断课程依赖是否可行。三者分别体现标记法、广搜传播与图论拓扑的核心应用。

记录大学学习学习成长过程,欢迎各位一起交流 331

力扣3无重复字符的最长字串(滑动窗口)

该题使用滑动窗口+哈希集合优化,通过复用Set实现O(n)时间复杂度。若每轮循环都新建HashSet,虽逻辑正确,但需重复插入删除,退化为O(n²),导致超时。原解法利用窗口右移时仅移除左端旧字符、扩展右边界,避免重复操作,实现高效遍历。

Pniubi的博客 230

LeetCode 11 - 20

LeetCode 题库 11 - 20

djhws144的博客 238

LeetCodehot100+背包问题+虚拟线程

虚拟线程虽能高效利用CPU,但滥用会导致资源耗尽。错误用法中,瞬间创建1万个虚拟线程并发调用慢速下游服务,虽不占用物理线程,却引发网络连接、内存和下游服务的全面崩溃。根本原因在于虚拟线程仅缓解“等待”成本,未解决“资源”瓶颈。正确做法是在IO边界使用Semaphore限流,如设为100,控制并发数,使多余请求在堆内存中廉价挂起,保护系统稳定。虚拟线程需配合背压机制,才能真正发挥其高并发优势。

记录大学学习学习成长过程,欢迎各位一起交流 421

LeetCode.257.二叉树的所有路径

1.用一个共享的 path 数组记当前这条路上的节点值,每进入一个节点就先把它自己的值记进去。2.如果它左右孩子都空,说明这条路走到头了,就把 path 里的值按箭头格式拼成一条字符串,存进 result;3.不是叶子的话,有左孩子就往左递归,有右孩子就往右递归。4.递归完在函数末尾把刚刚记进去的那个值弹出来,退回到上一层,这样才能接着去走别的分支。

2603_96571045的博客 188
上一篇: No.208 - LeetCode[48] Rotate Image - 正方形旋转-coding基础
下一篇: No.211 - LeetCode[56] Merge Intervals - 区间合并 - 经典
ShellDawn
博客等级 码龄10年 75粉丝 756原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值