每日一道leetcode(2026.03.27):循环移位后的矩阵相似检查

每日一道leetcode(2026.03.27):循环移位后的矩阵相似检查

  • [1. 题目](#1. 题目)
  • [2. 分析](#2. 分析)
  • [3. 代码实现](#3. 代码实现)

1. 题目

给你一个下标从 0 开始且大小为 m x n 的整数矩阵 mat 和一个整数 k 。请你将矩阵中的 奇数 行循环 右 移 k 次,偶数 行循环 左 移 k 次。

如果初始矩阵和最终矩阵完全相同,则返回 true ,否则返回 false 。

示例 1:

输入:mat = \[1,2,1,2,5,5,5,5,6,3,6,3], k = 2

输出:true

解释:

初始矩阵如图一所示。

图二表示对奇数行右移一次且对偶数行左移一次后的矩阵状态。

图三是经过两次循环移位后的最终矩阵状态,与初始矩阵相同。

因此,返回 true 。

2. 分析

今天的题是简单难度,思路可以将每行移动后的元素放到一个新的一维数组,再比较两个数组是否相等,唯一需要注意的是k可以对列数取余,因为移动n次后就回到原来的位置了嘛,取余可以减少运算量。

3. 代码实现

java 复制代码
class Solution {
    public boolean areSimilar(int[][] mat, int k) {
        int col = mat[0].length;
        if (col == 1) {
            // 只有一列时
            return true;
        }
        // 对k求余
        int moveK = k % col;
        if (moveK == 0) {
            return true;
        }
        boolean isEven = true;
        for (int[] ints : mat) {
            isEven = !isEven;
            // 逐行判断
            for (int j = 0; j < col; j++) {
                // 奇数行右移,偶数行左移
                // 计算当前元素在新数组中的索引位置
                int index;
                if (isEven) {
                    index = j - moveK;
                    if (index < 0) {
                        index = col + index;
                    }
                } else {
                    index = j + moveK;
                    if (index > col - 1) {
                        index = index % col;
                    }
                }
                if (ints[index]!=ints[j]){
                    return false;
                }
            }
        }
        return true;
    }
}
相关推荐
一次旅行1 小时前
AutoAWQ完整实战:MIT激活感知AWQ量化,模型显存减半、推理提速且精度无损
人工智能·python·算法
GrowthDiary0071 小时前
算法题:寻找二维数组top k问题
数据结构·python·算法
可编程芯片开发1 小时前
基于全阶观测器的三自由度运动系统状态反馈控制simulink建模与仿真
算法
kobesdu1 小时前
从零推导FAST-LIO的观测雅可比矩阵
人工智能·算法·矩阵
乐思智能科技有限公司2 小时前
PLECS软件学习使用(二)直流电机基本系统模型
人工智能·算法·机器学习·面试·职场和发展
随意起个昵称2 小时前
贪心模型-Johnson法则
c++·算法
旋生万物2 小时前
电磁力 = 螺旋联络的 90° 旋转?麦克斯韦方程组的几何重构
人工智能·python·算法·机器学习·copilot·世界模型·物理ai
余俊晖3 小时前
多模态大模型细粒度视觉理解:Vision-OPD在线策略自蒸馏技术方案概述
人工智能·深度学习·算法·多模态·opd
脚踏实地皮皮晨3 小时前
003003001_Grid控件
开发语言·windows·算法·c#·visual studio
Hi李耶3 小时前
【LeetCode】6-Z字形变换
算法·leetcode·职场和发展