矩阵相关算法

矩阵旋转90度

给定一个 n × n 的二维矩阵 matrix 表示一个图像,请你将图像顺时针旋转 90 度。

#include <iostream>
#include <vector>using namespace std;void rotate(vector<vector<int>>& matrix) {int n = matrix.size();// 第一步:转置矩阵for (int i = 0; i < n; ++i) {for (int j = i + 1; j < n; ++j) {swap(matrix[i][j], matrix[j][i]);}}// 第二步:反转每一行for (int i = 0; i < n; ++i) {std::reverse(matrix[i].begin(), matrix[i].end());}
}int main() {vector<vector<int>> matrix = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};rotate(matrix);// 输出结果for (const auto& row : matrix) {for (const auto& elem : row) {cout << elem << " ";}cout << endl;}return 0;
}

螺旋矩阵

将一个矩阵中的元素按照从右到左,从上到下,从右到左,从下到上依次输出

#include <iostream>
#include <vector>using namespace std;vector<int> spiralOrder(const vector<vector<int>>& matrix) {vector<int> result;if (matrix.empty()) return result;int top = 0, bottom = matrix.size() - 1;int left = 0, right = matrix[0].size() - 1;while (top <= bottom && left <= right) {// 从左到右遍历上边界for (int i = left; i <= right; i++) {result.push_back(matrix[top][i]);}top++;// 从上到下遍历右边界for (int i = top; i <= bottom; i++) {result.push_back(matrix[i][right]);}right--;//防止上面top++越界if (top <= bottom) {// 从右到左遍历下边界for (int i = right; i >= left; i--) {result.push_back(matrix[bottom][i]);}bottom--;}//防止上面right--越界if (left <= right) {// 从下到上遍历左边界for (int i = bottom; i >= top; i--) {result.push_back(matrix[i][left]);}left++;}}return result;
}int main() {vector<vector<int>> matrix = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};vector<int> result = spiralOrder(matrix);// 输出结果for (int num : result) {cout << num << " ";}cout << endl;return 0;
}

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

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

相关文章

tsp 车联网功GB32960

https://github.com/zhengyishan/tsp 基于GB32960协议数据接入网关 dyy-gateway-server 功能:车联网数据接入网关主要技术:Netty,Kafka,内存Redis二级缓存/订阅发布特点:高性能,高并发,高可用,支持K8S同POD多副本集群部署,横向拓展扩容测试简介:基于4c8g云虚拟主机,IO密集型机…

王爽汇编语言第三版实验2

实验任务 (1)使用Debug&#xff0c;将下面的程序段写 入程序&#xff0c;逐条进行&#xff0c;根据指令执行后的实际运行情况填空。 mov ax,ffff mov ds,ax mov ax,2200 mov ss,ax mov sp,0100 mov ax,[0] ;axC0EAH add ax,[2] ;axCOFCH mov bx,[4] ;bx30F0H add …

Flink消费Kafka实时写入Doris

本文模拟实际生产环境&#xff0c;通过FileBeat采集日志信息到Kafka&#xff0c;再通过Flink消费Kafka实时写入Doris。 文章目录 Filebeat采集日志到KafkaFlink消费Kafka实时写入Doris总结 Filebeat采集日志到Kafka 常见的日志采集工具有以下几种&#xff1a;Flume、Logstash和…

基于SpringBoot+Vue+uniapp微信小程序的校园反诈骗微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

Python 爬虫实战与技巧分享--urllib

Python 爬虫实战与技巧分享–urllib 在当今信息时代&#xff0c;数据的价值日益凸显。Python 爬虫作为一种强大的数据获取工具&#xff0c;能够帮助我们从互联网上抓取各种有价值的信息。本文将结合具体代码示例&#xff0c;深入探讨 Python 爬虫的相关知识和关键要点。 一、…

Unity 从零开始搭建一套简单易用的UGUI小框架 功能撰写与优化篇

Unity 从零开始搭建一套简单易用的UGUI小框架 基础分析篇-CSDN博客 开始撰写 从基础分析篇我们得到了三个类&#xff0c;面板基类&#xff0c;管理类和面板子类 那就从面板基类开始&#xff0c;定义其基本行为 面板基类 基本方法都很简单&#xff0c;分别是首次加载并打开…

[含文档+PPT+源码等]精品基于springboot实现的原生微信小程序小区兼职系统

基于Spring Boot实现的原生微信小程序小区兼职系统背景&#xff0c;可以从以下几个方面进行阐述&#xff1a; 一、技术背景 移动互联网的普及&#xff1a;随着移动互联网的快速发展&#xff0c;微信小程序作为一种轻量级应用&#xff0c;因其无需下载安装、即用即走的特点&am…

基于STM32设计的智能婴儿床(华为云IOT)(244)

文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成【4】ESP8266工作模式配置1.2 设计思路【1】整体设计思路【2】整体构架【3】上位机开发思路1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要1.4 开发工具的选择【1…

SSD |(七)FTL详解(中)

文章目录 &#x1f4da;垃圾回收&#x1f407;垃圾回收原理&#x1f407;写放大&#x1f407;垃圾回收实现&#x1f407;垃圾回收时机 &#x1f4da;解除映射关系&#x1f4da;磨损均衡 &#x1f4da;垃圾回收 &#x1f407;垃圾回收原理 ✋设定一个迷你SSD空间&#xff1a; 假…

解决ImageIO无法读取部分JPEG格式图片问题

解决ImageIO无法读取部分JPEG格式图片问题 问题描述 我最近对在线聊天功能进行了一些内存优化&#xff0c;结果在回归测试时&#xff0c;突然发现有张图片总是发送失败。测试同事把问题转到我这儿来看&#xff0c;我仔细检查了一下&#xff0c;发现是上传文件的接口报错&#…

获取非加密邮件协议中的用户名和密码——安全风险演示

引言 在当今的数字时代,网络安全变得越来越重要。本文将演示如何通过抓包工具获取非加密邮件协议中的用户名和密码,以此说明使用非加密协议的潜在安全风险。通过这个演示,我们希望能提高读者的安全意识,促使大家采取更安全的通信方式。 注意: 本文仅用于教育目的,旨在提高安全…

每日一题学习笔记——移动零

给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums [0] 输出…

Android开发蒙版引导操作功能

Android开发蒙版引导操作功能 复杂的功能&#xff0c;往往需要在上面加一层蒙版引导用户操作 一、思路&#xff1a; 堆积布局方式 二、效果图&#xff1a; 三、关键代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <FrameLayout x…

【大模型】AI视频课程制作工具开发

1. 需求信息 1.1 需求背景 讲师们在制作视频的过程中&#xff0c;发现录制课程比较麻烦&#xff0c;要保证环境安静&#xff0c;保证录制过程不出错&#xff0c;很容易反复重复录制&#xff0c;为了解决重复录制的工作量&#xff0c;想通过 ai 课程制作工具&#xff0c;来解决…

飞机大战告尾

参考 PPO算法逐行代码详解 链接 通过网盘分享的文件&#xff1a;PlaneWar 链接: https://pan.baidu.com/s/1cbLKTcBxL6Aem3WkyDtPzg?pwd1234 提取码: 1234 10.17关于博客发了又改这件事 悲催的事 今天训练了一早上ppo模型&#xff0c;满怀期待的检测成果时发现一点长进都…

【Linux】“echo $变量“ 命令打印变量值的底层原理

在 shell 中&#xff0c;echo $变量 命令的工作原理涉及几个关键步骤&#xff0c;主要是由 shell 解释器来处理变量的查找和替换。以下是详细的过程&#xff1a; 变量展开的过程顺序 变量引用&#xff1a; 在命令行中&#xff0c;变量通常以 $variable_name 或 ${variable_…

Rust与C++开发效率比较

Rust 和 C++ 都是高性能系统编程语言,但它们在开发效率上有所不同。以下是一些主要的区别: 1. 内存管理和安全性 Rust: 提供了内置的内存管理机制,通过所有权系统、借用检查器和生命周期规则避免了大多数内存安全问题。开发者在 Rust 中无需手动管理内存分配和释放,从而减…

Android 设置控件为圆形

Android的圆形控件 对于所有的View有效 在开发的过程中&#xff0c;肯定需要实现一个圆形的控件&#xff0c;而且不是绘制一个圆形&#xff0c;那么怎么弄呢&#xff0c;在Android5.0后&#xff0c;有一个类ViewOutlineProvider&#xff0c;可以实现这个功能&#xff0c;应该是…

机器学习-零基础学习机器学习-1019

1.安装pycharm专业版&#xff0c;安装python依赖&#xff0c;设置pip版本&#xff0c;设置国内镜像 打开cmd命令行&#xff0c;升级 pip 到最新的版本 (>10.0.0) 后进行配置&#xff1a; #更新pip源 python -m pip install --upgrade pip #换源 pip config set global.…

使用Shell脚本对Java应用等服务进行启停控制(支持批量)

通过shell脚本对Java服务启停进行控制。支持单个服务和多个服务的 start、stop、status、restart。支持自定义启动命令。(不限于Java服务,适用于各类通过命令行启动的服务) 脚本名称为 runjar.sh , 底部提供源码。通过三部分进行说明:操作说明、维护自定义服务列表、脚本源…