当前位置: 首页 > news >正文

【LeetCode 热题 100】矩阵置零 / 螺旋矩阵 / 旋转图像 / 搜索二维矩阵 II

头像
⭐️个人主页:@小羊
⭐️所属专栏:LeetCode 热题 100
很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~

动图描述

目录

    • 矩阵
      • 矩阵置零
      • 螺旋矩阵
      • 旋转图像
      • 搜索二维矩阵 II


矩阵

矩阵置零

  • 矩阵置零

在这里插入图片描述

用两个数组分别标记行和列,判断这一行和这一列有没有出现0。

class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {int m = matrix.size(), n = matrix[0].size();vector<int> row(m), col(n);for (int i = 0; i < m; i++){for (int j = 0; j < n; j++){if (matrix[i][j] == 0){row[i] = 1;col[j] = 1;}}}for (int i = 0; i < m; i++){for (int j = 0; j < n; j++){if (row[i] || col[j]){matrix[i][j] = 0;}}} }
};

螺旋矩阵

  • 螺旋矩阵

在这里插入图片描述

用方向数组来转换方向,当遇到边界、或这个位置已经遍历过了,就是变换方向的时候。

class Solution {
public:vector<int> spiralOrder(vector<vector<int>>& matrix) {int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};int m = matrix.size(), n = matrix[0].size();vector<vector<bool>> used(m, vector<bool>(n));vector<int> res(m * n);int a = 0, b = 0, d = 1;for (int i = 0; i < m * n; i++){used[a][b] = true;res[i] = matrix[a][b];int x = a + dx[d], y = b + dy[d];if (x < 0 || x == m || y < 0 || y == n || used[x][y]){d = (d + 1) % 4;x = a + dx[d], y = b + dy[d];}a = x, b = y;}return res;}
};

旋转图像

  • 旋转图像

在这里插入图片描述

纯纯找规律题。先正对角线交换,然后逐行反转。

class Solution {
public:void rotate(vector<vector<int>>& matrix) {int m = matrix.size(), n = matrix[0].size();for (int i = 0; i < m; i++){for (int j = 0; j < i; j++){swap(matrix[i][j], matrix[j][i]);}}for (int i = 0; i < m; i++){reverse(matrix[i].begin(), matrix[i].end());} }
};

搜索二维矩阵 II

  • 搜索二维矩阵 II

在这里插入图片描述

仔细观察发现,从右上角看这个矩阵近似一个搜索二叉树,那就可以像查找二叉搜索树那样查找目标值。

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m = matrix.size(), n = matrix[0].size();int x = 0, y = n - 1;while (x < m && y >= 0){if (target < matrix[x][y]) y--;else if (target > matrix[x][y]) x++;else return true;}return false;}
};

本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~

头像

相关文章:

  • 代码颜色模式python
  • 【资料分享】全志T536(异构多核ARMCortex-A55+玄铁E907 RISC-V)工业核心板硬件说明书
  • Hadoop 和 Spark 生态系统中的核心组件
  • 最新字节跳动运维云原生面经分享
  • VScode与远端服务器SSH链接
  • 杭州数据库恢复公司之Dell服务器RAID5阵列两块硬盘损坏报警离线
  • UEC++第15天|番茄插件、实现跳跃、实现背景运动
  • MongoDB的图形化工具robo3t,navicat
  • 深入理解 Web Service:原理、组件与核心技术详解
  • Linux-02-VIM和VI编辑器
  • 【运维心得】银行运维交接的坑
  • 今日行情明日机会——20250429
  • 【3dmax笔记】010: 创建标准基本体、扩展基本体
  • 小结: 接口类型和路由优先级
  • ssh配置与使用
  • USB 网卡——RNDIS 控制消息流程
  • HarmonyOS ArkUI安全控件开发指南:粘贴、保存与位置控件的实现与隐私保护实践
  • Vue 中的过渡效果与响应式数据:transition、transitiongroup、reactive 和 ref 详解
  • 长效住宅IP是什么?如何获取长效住宅IP?
  • 【codeforces 2104D,E】欧拉筛,字符串上dp
  • 华夏幸福:去年营业收入237.65亿元,同比减亏12亿元
  • 李铁案二审驳回上诉,维持一审有期徒刑20年的判决
  • 中信银行一季度净利195.09亿增1.66%,不良率持平
  • 江西省公安厅警务保障部原主任辛卫平主动交代问题,正接受审查调查
  • 专访丨青年作家杜梨:以动物的视角去观察这个世界
  • 流浪猫给车主造成困扰,长春一小区拟投药应对?律师:此举欠妥