矩阵相关算法

news/2024/10/19 7:35:34/

矩阵旋转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/news/1540210.html

相关文章

侏罗纪公园不再是电影了吗?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

每日回顾:简单用C写 选择排序、堆排序

选择排序 直接选择排序&#xff08;Selection Sort&#xff09;是一种简单的排序算法。它的基本思想是每次从未排序的部分中选择最小&#xff08;或最大&#xff09;的元素&#xff0c;将其放到已排序部分的末尾。 版本一&#xff1a; //直接选择排序1 void SelectSort_1(in…

WT2003H语音芯片MCU下载方案助力电动车智能化升级:实现多功能语音提示+报警功能

一&#xff1a;产品市场 随着科技的发展&#xff0c;电瓶车在技术革新上也在不断进步&#xff0c;如今许多厂家&#xff0c;都会加入语音提示功能&#xff0c;能在倒车、喇叭、故障时发出语音报警&#xff0c;提示骑行者电量不足、倒车请注意、故障语音提示等&#xff1b;唯创…

022 elasticsearch文档管理(添加、修改、删除、批处理)

文章目录 添加文档修改文档删除文档根据_id取文档使用批处理_bulk PortX&#xff1a; https://portx.online/zh MobaXterm&#xff1a; https://mobaxterm.mobatek.net/ FinalShell&#xff1a; http://www.hostbuf.com/ 添加文档 向索引中添加一行数据 使用json来表示 使用…

CVTE Android面试题及参考答案

Activity 的生命周期 Activity 的生命周期分为以下几个主要状态: onCreate ():在 Activity 第一次被创建的时候调用。通常在这个方法中进行一些初始化操作,如设置布局、初始化成员变量等。这是 Activity 进入可见状态的第一步。onStart ():当 Activity 即将对用户可见的时候…

【RV1126】板子adb 调试流程

1. 连接电源线&#xff0c;网线 2. 打开终端 adb connect 192.168.2.99 3.进入设备 adb shell 4.开始推流 cd /oem/usr/bin ./rkmedia_vi_venc_rtsp_test -a /etc/iqfiles/ -I 0 -I 0 选择的摄像头序号&#xff0c;可以选择0或1 5.查看相机参数 v4l2-ctl --device/de…

C++ OpenCV实现简单的自瞄脚本(OpenCV实战)

练枪的时候发现打的靶子特征很醒目&#xff0c;而且操控的逻辑也不是说特别难&#xff0c;刚好会一点点C和OpenCV&#xff0c;为什么不试试写一个小程序来帮助我们瞄准呢&#xff1f; 实现效果 我们主要是通过这款游戏测试自瞄 简单的调参之后本周世界排名也是打到了第一名&…

反向传播和优化 pytorch

**前置知识&#xff1a; 优化器&#xff1a;optimtorch.optim.SGD(xigua1.parameters(),lr0.01) 传入模型的参数、学习速率 计算损失&#xff1a;result_lossloss(outputs,targets) 梯度清零&#xff1a;optim.zero_grad() 计算梯度并反向传播&#xff1a;result_loss.backward…