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

给你一个 m x n 的整数矩阵 grid,以及三个整数 xyk

整数 xy 表示一个 正方形子矩阵 的左上角下标,整数 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) 只有行变化,没有列变化 所以只需要控制行变化的基础上一个一个去遍历每一列的位置,以及对称只需要循环一半即可。

相关推荐
好奇龙猫1 天前
【人工智能学习-AI入试相关题目练习-第七次】
人工智能·学习
夏鹏今天学习了吗1 天前
【LeetCode热题100(87/100)】最小路径和
算法·leetcode·职场和发展
jacGJ1 天前
记录学习--文件读写
java·前端·学习
哈哈不让取名字1 天前
基于C++的爬虫框架
开发语言·c++·算法
幻云20101 天前
Python深度学习:从筑基到登仙
前端·javascript·vue.js·人工智能·python
峰顶听歌的鲸鱼1 天前
Kubernetes介绍和部署
运维·笔记·云原生·容器·kubernetes·学习方法
枷锁—sha1 天前
【PortSwigger Academy】SQL 注入绕过登录 (Login Bypass)
数据库·sql·学习·安全·网络安全
仰望星空@脚踏实地1 天前
本地Python脚本是否存在命令注入风险
python·datakit·命令注入
魔芋红茶1 天前
Spring Security 学习笔记 2:架构
笔记·学习·spring
LOnghas12111 天前
果园环境中道路与树木结构检测的YOLO11-Faster语义分割方法
python