LeetCode热题100刷题8:54. 螺旋矩阵、73. 矩阵置零、48. 旋转图像

news2024/11/29 2:39:40

54. 螺旋矩阵

在这里插入图片描述

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
		vector<int> vec;
        if(matrix.empty())
        	return vec;
        int left=0;
        int right = matrix[0].size()-1;
        int up=0;
        int down = matrix.size()-1;
        while(true) {
            for(int i=left;i<=right;++i) {
				vec.push_back(matrix[up][i]);

            }
            up++;
            if(up>down) break;
            for(int i=up;i<=down;i++) {
                vec.push_back(matrix[i][right]);
            }
            right--;
            if(right<left)	break;
            for(int i=right;i>=left;i--) {
                vec.push_back(matrix[down][i]);
            }
            down--;
            if(down<up)	break;
            for(int i=down;i>=up;i--) {
                vec.push_back(matrix[i][left]);
            }
            left++;
            if(left>right)	break;
        }
        return vec;
    }
};

73. 矩阵置零

在这里插入图片描述

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
		int flag0 = 1;
        for(int i=0 ; i<matrix.size();i++) {
            if(matrix[i][0]==0)
            	flag0=0;
        }
        for(int i=0;i<matrix.size();i++) {
            for(int j=0;j<matrix[0].size();j++) {
                if(matrix[i][j]==0)
                	matrix[i][0]=0;
            }
        }
        for(int j=1;j<matrix[0].size();j++) {
            for(int i=0;i<matrix.size();i++) {
                if(matrix[i][j]==0) {
                    for(int i=0;i<matrix.size();i++)  {
                        matrix[i][j]=0;
                    }
                    break;
                }
                else
                	continue;
            }
        }
        for(int i=0;i<matrix.size();i++) {
            if(matrix[i][0]==0) {
                for(int j=0;j<matrix[0].size();j++) {
                    matrix[i][j]=0;
                }
                continue;
            }

        }
        if(flag0==0) {
            for(int i=0;i<matrix.size();i++) {
                matrix[i][0]=0;
            }
        }
    }
};

48. 旋转图像

思路:

黑色圈住的区域是遍历范围(划分 n为奇数和偶数两种情况),其中的每个点下标(按照大致的逻辑:旋转第i行转90°变成倒数第i列 )找到旋转90、180、270、的对应下标,只需要一个变量temp暂存matrix[i][j],然后交替替换值
在这里插入图片描述

在这里插入图片描述

class Solution {
public:
    
    void rotate(vector<vector<int>>& matrix) {
        if(matrix.size() <=1)
            return;
        int n = matrix.size();
        if(n%2 ==0) {
            for(int i=0;i<n/2;i++) {
                for(int j=0;j<n/2;j++) {
                    int a = matrix[i][j];
                    matrix[i][j] = matrix[n-j-1][i];
                    matrix[n-j-1][i] = matrix[n-1-i][n-1-j];
                    matrix[n-1-i][n-1-j] = matrix[j][n-1-i];
                    matrix[j][n-i-1] = a;
                }
            }
        }
        if(n%2 ==1) {
            for(int i=0;i<n/2;i++) {
                for(int j=0;j<n/2+1;j++) {
                    int a = matrix[i][j];
                    matrix[i][j] = matrix[n-j-1][i];
                    matrix[n-1-j][i] = matrix[n-1-i][n-1-j];
                    matrix[n-1-i][n-1-j] = matrix[j][n-1-i];
                    matrix[j][n-i-1] = a;
                }
            }
        }
    }
};

还有一个题目明天继续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1902711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【TB作品】脉搏测量,ATMEGA8单片机,Proteus仿真,ATmega8控制脉搏测量与显示系统

硬件组成&#xff1a; LCD1602脉搏测量电路&#xff08;带灯&#xff09;蜂鸣器报警按键设置AT24C02 功能&#xff1a; &#xff08;1&#xff09;LCD1602主页显示脉搏、报警上限、报警下限&#xff1b; &#xff08;2&#xff09;五个按键&#xff1a;按键1&#xff1a;切换设…

axios的使用,处理请求和响应,axios拦截器

1、axios官网 https://www.axios-http.cn/docs/interceptors 2、安装 npm install axios 3、在onMouunted钩子函数中使用axios来发送请求&#xff0c;接受响应 4.出现的问题&#xff1a; &#xff08;1&#xff09; 但是如果发送请求请求时间过长&#xff0c;回出现请求待处…

RK3568 GPU介绍及使用

一、RK3568简介 RK3568四核64位Cortex-A55 处理器&#xff0c;采用全新ARM v8.2-A架构&#xff0c;主频最高可达2.0GHz&#xff0c;效能有大幅提升&#xff1b;采用22nm先进工艺&#xff0c;具有低功耗高性能的特点RK3568集成了双核心架构 GPU&#xff0c;高性能VPU以及高效能…

YOLOv8_obb数据集可视化[旋转目标检测实践篇]

先贴代码,周末再补充解析。 这个篇章主要是对标注好的标签进行可视化,虽然比较简单,但是可以从可视化代码中学习到YOLOv8是如何对标签进行解析的。 import cv2 import numpy as np import os import randomdef read_obb_labels(label_file_path):with open(label_file_path,…

Linux内存管理--系列文章柒——硬件架构

一、引子 之前文章讲解的是系统的虚拟内存&#xff0c;本章讲述这些硬件的架构和系统怎样统一管理这些硬件的。 二、物理内存模型 物理内存模型描述了计算机系统中的物理内存如何由操作系统组织和管理。它定义了物理内存如何划分为单元&#xff0c;如何寻址这些单元以及如何…

yolov8实战——yolov8TensorRT部署(python推理)(保姆教学)

yolov8实战——yolov8TensorRT部署&#xff08;python推理&#xff09;&#xff08;保姆教学&#xff09; 一 、准备好代码和环境安装TensorRt下载代码和安装环境 部署和推理构建ONNX构建engine无torch推理torch推理 最近用到yolov8&#xff0c;但是寻找了一圈才找到了yolov8最…

Java 自定义集合常量

文章目录 Java 自定义集合常量一、普通方法自定义集合常量信息1、定义 Map 集合信息&#xff08;1&#xff09;方法一&#xff1a;使用静态代码块&#xff08;2&#xff09;方法二&#xff1a;简单定义 Map 常量 2、定义 List 集合信息3、定义 Set 集合信息 二、通过 Collectio…

Node.js-path 模块

path 模块 path 模块提供了 操作路径 的功能&#xff0c;如下是几个较为常用的几个 API&#xff1a; 代码实例&#xff1a; const path require(path);//获取路径分隔符 console.log(path.sep);//拼接绝对路径 console.log(path.resolve(__dirname, test));//解析路径 let pa…

一文学会 BootStrap

文章目录 认识BootStrap历史优缺点使用注意安装CDN源码引入包管理器 媒体查询屏幕尺寸的分割点&#xff08;Breakpoints&#xff09;响应式容器网格系统基本使用底层实现.container.row.col、.col-份数 网格嵌套自动布局列 Auto-layout响应式类 Responsive Class 响应式工具类-…

前端根据目录生成模块化路由routes

根据约定大于配置的逻辑&#xff0c;如果目录结构约定俗成&#xff0c;前端是可以根据目录结构动态生成路由所需要的 route 结构的&#xff0c;这个过程是要在编译时 进行&#xff0c;生成需要的代码&#xff0c;保证运行时的代码正确即可 主流的打包工具都有对应的方法读取文…

Qt(二)弹窗类 颜色对话框 字体对话框 资源文件

文章目录 一、QDebug类和QMessagebox类&#xff08;一&#xff09;QDebug类&#xff1a;打印调试类&#xff08;二&#xff09;QMessagebox类&#xff1a;弹窗类2. 修改组件图标&#xff08;1&#xff09;通过ui界面&#xff08;2&#xff09;通过QIcon的方式&#xff08;3&…

SpringBoot新手快速入门系列教程五:基于JPA的一个Mysql简单读写例子

现在我们来做一个简单的读写Mysql的项目 1&#xff0c;先新建一个项目&#xff0c;我们叫它“HelloJPA”并且添加依赖 2&#xff0c;引入以下依赖&#xff1a; Spring Boot DevTools (可选&#xff0c;但推荐&#xff0c;用于开发时热部署)Lombok&#xff08;可选&#xff0c…

如何在前端网页实现live2d的动态效果

React如何在前端网页实现live2d的动态效果 业务需求&#xff1a; 因为公司需要做机器人相关的业务&#xff0c;主要是聊天形式的内容&#xff0c;所以需要一个虚拟的卡通形象。而且为了更直观的展示用户和机器人对话的状态&#xff0c;该live2d动画的嘴型需要根据播放的内容来…

aardio —— 今日减bug

打字就减bug 鼠标双击也减bug 看看有多少bug够你减的 使用方法&#xff1a; 1、将资源附件解压缩&#xff0c;里面的文件夹&#xff0c;放到aardio\plugin\plugins 目录 2、aardio 启动插件 → 插件设置 → 选中“今日减bug” → 保存。 3、重启 aardio&#xff0c;等aa…

高效率写文案软件有哪些?5款免费文案生成器值得拥有

在信息洪流奔涌的当下&#xff0c;文案的重要性愈发凸显。对于文案创作者来说&#xff0c;找到能提高效率的软件至关重要&#xff0c;如&#xff1a;市面上有些不错的文案生成器&#xff0c;它们能够为大家自动生成出高质量文案内容&#xff0c;给文案创作者提供了非常大的帮助…

Python和MATLAB微机电健康推导算法和系统模拟优化设计

&#x1f3af;要点 &#x1f3af;惯性测量身体活动特征推导健康状态算法 | &#x1f3af;卷积网络算法学习惯性测量数据估计六自由度姿态 | &#x1f3af;全球导航卫星系统模拟&#xff0c;及惯性测量动态测斜仪算法、动态倾斜算法、融合算法 | &#x1f3af;微机电系统加速度…

vb.netcad二开自学笔记2:认识vs编辑器

认识一下宇宙第一编辑器的界面图标含义还是很重要的&#xff0c;否则都不知道面对的是什么还怎么继续&#xff1f; 一、VS编辑器中常见的图标的含义 变量 长方体&#xff1a;变量 局部变量 两个矩形块&#xff1a;枚举 预定义的枚举 紫色立方体&#xff1a;方法 橙色树状结构…

vs2022安装qt vs tool

1 缘由 由于工作的需要&#xff0c;要在vs2022上安装qt插件进行开发。依次安装qt&#xff0c;vs2022&#xff0c;在vs2022的扩展管理中安装qt vs tool。 2 遇到困难 问题来了&#xff0c;在qt vs tool的设置qt version中出现问题&#xff0c;设置msvc_64-bit时出现提示“invali…

理解GCN

一、从CNN到GNN 1、CNN可被视为一类特殊的GNN&#xff0c;相邻节点大小顺序固定的GNN。 2、利用消息传递进行节点分类的例子&#xff1a; 给定上面的图&#xff0c;和少量已经分类的节点&#xff08;红&绿&#xff09;&#xff0c;对剩余其他节点进行分类&#xff0c;这是…

C语言 do while 循环语句练习 中

练习&#xff1a; 4.编写代码&#xff0c;演示多个字符从两端移动&#xff0c;向中间汇聚 // 编写代码&#xff0c;演示多个字符从两端移动&#xff0c;向中间汇聚 //welcome to china!!! //w ! //we !! //wel !!! //.... //welco…