3643.垂直翻转子矩阵 练习理解

给你一个 m x n 的整数矩阵 grid,以及三个整数 x、y 和 k。

整数 x 和 y 表示一个 正方形子矩阵 的左上角下标,整数 k 表示该正方形子矩阵的边长。

你的任务是垂直翻转子矩阵的行顺序。

返回更新后的矩阵。

例如:

输入: grid = \[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16], x = 1, y = 0, k = 3

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

思路:

简单理解x是上下移动,y是左右移动 因为他只是行进行变化,所以我们只需要关注行的变化情况,比如说这个 5 他从(1,0)到了(3,0)即x->x+k-1,y->y又因为他是对称的,所以我们只需要做一半就可以,另一半是对称的,即控制a=x,b=x+k-1,a<b一定就可以保证,然后进行行变化即可,采用双指针的办法:

python 复制代码
class Solution:
    def reverseSubmatrix(self,grid:List[List[int]],x:int,y:int,k:int)->List[List[int]]:
        a,b=x,x+k-1
        while a<b:
            for i in range(y,y+k):
                grid[a][i],grid[b][i]=grid[b][i],grid[a][i]
            a+=1
            b-=1
        return grid

难点:

理解行变化和列变化的范围为(x,x+k-1),(y,y+k-1) 只有行变化,没有列变化 所以只需要控制行变化的基础上一个一个去遍历每一列的位置,以及对称只需要循环一半即可。

相关推荐
CCIE-Yasuo8 分钟前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
zh路西法16 分钟前
【PACE】面向永磁同步电机PMSM 执行器的参数辨识与能耗感知强化学习 Sim-to-Real
python·cma-es·pmsm·sim-to-real·issac·pace
La Pulga43 分钟前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
后台模板学习1 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
w_zero_one1 小时前
算法--构造
java·数据结构·算法
2601_967987371 小时前
如何运行 Python 代码
python·最佳实践·脚本文件·代码运行·交互式环境
WiKiLeaks_successor1 小时前
重构Time库的抽象设计
python·重构
AI源码1 小时前
基于 Python 的短视频用户行为分析系统
开发语言·python
其实防守也摸鱼1 小时前
信创安全竞赛知识总结与题库
大数据·网络·人工智能·算法·安全·php
Zhao-Jichao1 小时前
AI Prompting for Everyone 课程笔记 - P19 数据分析 Data Analysis
人工智能·笔记·数据分析