news 2026/9/27 8:24:05

LeetCode 3643.子矩阵垂直翻转算法解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 3643.子矩阵垂直翻转算法解析

LeetCode 3643.子矩阵垂直翻转算法解析

题目描述

给定一个二维矩阵grid和四个参数(x, y, k),实现一个函数,将矩阵中以(x, y)为左上角、边长为k的正方形子矩阵进行上下翻转(垂直镜像翻转)。

算法思路

本题的核心是实现子矩阵的垂直翻转操作。垂直翻转即将子矩阵的第1行与第k行交换,第2行与第k-1行交换,以此类推,直到中间行。

实现方法

采用双指针法:

  • 设置两个指针l(上边界)和r(下边界),初始分别指向子矩阵的第一行和最后一行
  • 当l < r时,交换这两行的所有元素
  • 然后l++,r--,继续交换直到两指针相遇

代码实现

classSolution{public:vector<vector<int>>reverseSubmatrix(vector<vector<int>>&grid,intx,inty,intk){intl=x,r=x+k-1;// 设置上下边界指针while(l<r){// 当未到达中间时for(intj=y;j<y+k;j++)// 交换当前两行的所有列swap(grid[l][j],grid[r][j]);l++;// 上边界下移r--;// 下边界上移}returngrid;}};

算法图解

示例演示

假设输入矩阵:

grid = [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12], [13,14,15,16] ] 调用 reverseSubmatrix(grid, 0, 0, 3)

子矩阵范围(左上角(0,0),边长3):

[1, 2, 3] [5, 6, 7] [9,10,11]

执行过程:

  1. 第1步:l=0, r=2,交换第0行和第2行
    [9,10,11] [5, 6, 7] [1, 2, 3]
  2. 第2步:l=1, r=1,循环结束

最终结果:

[9,10,11,4] [5, 6, 7,8] [1, 2, 3,12] [13,14,15,16]

复杂度分析

  • 时间复杂度:O(k²),需要遍历子矩阵中所有元素一次
  • 空间复杂度:O(1),只使用常数额外空间

关键要点

  1. 子矩阵定位:通过(x, y)定位左上角,通过k确定边长
  2. 垂直翻转逻辑:只交换行,不交换列
  3. 边界处理:r = x + k - 1确保指针指向有效行索引
  4. 原地操作:直接修改原矩阵,无需额外空间

注意事项

  • 该函数假设子矩阵是正方形(k×k)
  • 函数会直接修改原矩阵,如果不想修改原矩阵,需要先进行深拷贝
  • 参数x, y必须确保子矩阵在grid范围内

总结

本题通过简单的双指针方法实现了子矩阵的垂直翻转操作,代码简洁高效。理解这个算法有助于掌握二维数组的区间操作技巧。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/27 8:19:36

高效配置LyricsX实现多平台歌词获取的完整指南

高效配置LyricsX实现多平台歌词获取的完整指南 【免费下载链接】LyricsX &#x1f3b6; Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX 在数字音乐消费中&#xff0c;歌词同步显示已成为提升听歌体验的关键功能。LyricsX作为mac…

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

智能面试官系统:基于Qwen3-0.6B-FP8的Java八股文模拟面试

智能面试官系统&#xff1a;基于Qwen3-0.6B-FP8的Java八股文模拟面试 最近和几个正在找工作的朋友聊天&#xff0c;发现他们最头疼的就是面试环节。尤其是Java开发岗位&#xff0c;那些经典的“八股文”问题&#xff0c;比如HashMap原理、JVM内存模型、Spring事务传播机制&…

作者头像 李华
网站建设 2026/9/27 8:20:39

OpenClaw家庭相册整理:QwQ-32B人脸识别与智能分类方案

OpenClaw家庭相册整理&#xff1a;QwQ-32B人脸识别与智能分类方案 1. 为什么需要本地化的智能相册管理 去年夏天&#xff0c;我在整理手机里积累的3万多张照片时&#xff0c;突然意识到一个严重问题——这些记录着家庭重要时刻的照片&#xff0c;正变得越来越难以管理。传统的…

作者头像 李华
网站建设 2026/9/27 8:21:50

龙芯2K1000的ACPI电源管理机制与工程实现

1. 龙芯CPU电源管理机制解析&#xff1a;ACPI在LoongArch平台的工程实现龙芯2K1000作为国产自主指令集架构&#xff08;LoongArch&#xff09;的早期代表芯片&#xff0c;其电源管理设计与传统ARM或x86平台存在显著差异。许多嵌入式工程师在首次接触该芯片时&#xff0c;常因上…

作者头像 李华