矩阵相关算法

devtools/2024/10/15 19:21:51/

矩阵旋转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.ppmy.cn/devtools/126304.html

相关文章

Three.js 快速入门 --- 鼠标操作三维场景

1、准备工作 需要引入 OrbitControls.js <script src"./three.js-r102/examples/js/controls/OrbitControls.js"></script>2、代码实现 function render() {renderer.render(scene,camera);//执行渲染操作 } render(); var controls new THREE.OrbitC…

全面掌握 Linux 服务管理:从入门到精通

全面掌握 Linux 服务管理&#xff1a;从入门到精通 引言 在 Linux 系统中&#xff0c;服务管理是系统管理员和开发者的基本技能之一。无论是启动、停止、重启还是查看服务状态&#xff0c;systemctl 命令都能让你轻松完成这些操作。今天&#xff0c;我们将深入探讨如何使用 sy…

系统架构设计师:数据库系统相关考题预测

作为系统架构设计师,在准备数据库系统相关的考试时,可以预期到的一些关键知识点包括但不限于以下几个方面: 数据库类型: 关系型数据库(RDBMS)与非关系型数据库(NoSQL)的区别及其适用场景。数据库管理系统(DBMS)的功能及组成部分。数据模型: 如何设计ER模型(实体-关…

Redis最佳实践

Redis最佳实践 文章目录 Redis最佳实践1 Redis键值设计1.1 优雅的key结构1.2 拒绝BigKey1.2.1 什么是BigKey1.2.2 BigKey的危害1.2.3 如何发现BigKey1.2.4 如何删除BigKey 1.3 恰当的数据类型1.4 总结 2 批处理优化2.1 Pipeline2.1.1 大数据导入的方式2.1.2 Pipeline2.1.3 总结…

sam2细节解析

模型输入prompt和image&#xff0c;特点是多了一个memory attention&#xff0c;将上一帧与当前帧通过attention机制进行融合&#xff0c;最后经过mask decoder推理输出。 对于视频&#xff0c;是一帧一帧的进行输出的。不是batch的并行输出 整体结构。 memory机制通过cross-a…

第二课:Python入门学习之开发工具的安装

今天我们进行Python开发工具的安装&#xff0c;其实网上的开发工具是很多的&#xff0c;每个人的习惯也都不一样&#xff0c;我们先去官网下载一个比较常用的吧。废话不多开始操作。 第一步&#xff1a;打开官网地址&#xff1a;https://www.jetbrains.com.cn/ 第二步&#xf…

Android常用布局

目录 布局文件中常见的属性 1. 基本布局属性 1&#xff09;android:layout_width 2&#xff09;android:layout_height 3&#xff09;android:layout_margin 4&#xff09;android:padding 2. 线性布局 (LinearLayout) 属性 1&#xff09;android:orientation 2&#xff09;and…

物联网智能项目(含案例说明)

物联网&#xff08;Internet of Things&#xff0c;简称IoT&#xff09;智能项目是指利用物联网技术将各种物理设备、传感器、软件、网络等连接起来&#xff0c;实现设备之间的互联互通&#xff0c;并通过数据采集、传输、处理和分析&#xff0c;实现智能化管理和控制的项目。以…