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

哪个网站可以做微信推送北京有限公司

哪个网站可以做微信推送,北京有限公司,网页设计实训报告总结100字,软件设计模式原题链接🔗: 旋转图像 难度:中等⭐️⭐️ 题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图…

原题链接🔗: 旋转图像
难度:中等⭐️⭐️

题目

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

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

示例 1
在这里插入图片描述
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[7,4,1],[8,5,2],[9,6,3]]

示例 2
在这里插入图片描述
输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

提示

n == matrix.length == matrix[i].length
1 <= n <= 20
-1000 <= matrix[i][j] <= 1000

题解

辅助数组法

  1. 题解:

要将一个 n × n 的二维矩阵(代表一个图像)顺时针旋转 90 度,你可以遵循以下解题思路:

  1. 理解问题:首先,理解顺时针旋转90度意味着什么。对于矩阵中的每个元素,它将移动到原始位置的左上角方向。

  2. 创建新矩阵:由于旋转后的矩阵大小不会改变,你可以使用与原始矩阵相同大小的新矩阵来存储结果。

  3. 遍历原始矩阵:遍历原始矩阵的每个元素,确定它们在新矩阵中的位置。对于矩阵中的每个元素 matrix[i][j],它将在新矩阵中的位置是 new_matrix[j][n-1-i]。

  4. 填充新矩阵:按照上述规则,将原始矩阵的元素复制到新矩阵的相应位置。

  5. 优化空间:如果不需要保留原始矩阵,你可以在原地修改矩阵以节省空间。这可以通过先交换行,然后反转每一行来实现。

  6. 代码实现:根据上述逻辑,编写代码实现矩阵的旋转。

  7. 测试:编写测试用例来验证你的解决方案是否正确。确保测试包括各种大小的矩阵,包括特殊情况,如 n=1 或 n=2。

  8. 考虑边界条件:确保你的解决方案能够处理矩阵的边界条件,例如矩阵的第一行和第一列。

  9. 性能分析:分析你的解决方案的时间和空间复杂度。理想情况下,时间复杂度应该是 O(n^2),因为每个元素都被访问一次,空间复杂度应该是 O(1),如果原地旋转的话。

  10. 代码优化:如果可能,尝试优化你的代码,使其更简洁或提高性能。

以下是一个简化的步骤描述,展示了如何在原地旋转矩阵:

  • 交换矩阵的行和列,即 matrix[i][j] 与 matrix[j][n-1-i] 交换。
  • 反转每一行,即 matrix[i] 变为 matrix[i] 的逆序。

这种方法不需要额外的空间,因为它直接在原始矩阵上进行操作。但请注意,这种方法会修改原始矩阵,如果需要保留原始矩阵,则需要先复制一份。

  1. 复杂度:时间复杂度应该是 O(n2),时间复杂度应该是 O(n2)。
  2. 过程
  • 创建一个新的 n × n 的矩阵,用于存储旋转后的图像。
  • 遍历原始矩阵,对于每个元素matrix[i][j],将其复制到新矩阵的相应位置,使用公式 new_matrix[j][n-1-i]。
  • 释放原始矩阵(如果需要的话)。
  1. c++ demo
#include <iostream>
#include <vector>using namespace std;void rotateMatrix(vector<vector<int>>& matrix) {int n = matrix.size();vector<vector<int>> newMatrix(n, vector<int>(n));// 将原始矩阵的元素复制到新矩阵中for (int i = 0; i < n; ++i) {for (int j = 0; j < n; ++j) {newMatrix[j][n - 1 - i] = matrix[i][j];}}// 将新矩阵赋值回原始矩阵matrix = newMatrix;
}void printMatrix(const vector<vector<int>>& matrix) {for (const auto& row : matrix) {for (int val : row) {cout << val << " ";}cout << endl;}
}int main() {vector<vector<int>> matrix = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};cout << "Original Matrix:" << endl;printMatrix(matrix);rotateMatrix(matrix);cout << "Rotated Matrix:" << endl;printMatrix(matrix);cout << endl;vector<vector<int>> matrix2 = {{5,  1,  9,  11},{2,  4,  8,  10},{13, 3,  6,  7 },{15, 14, 12, 16}};cout << "Original Matrix2:" << endl;printMatrix(matrix2);rotateMatrix(matrix2);cout << "Rotated Matrix2:" << endl;printMatrix(matrix2);return 0;
}
  • 输出结果:

Original Matrix:
1 2 3
4 5 6
7 8 9
Rotated Matrix:
7 4 1
8 5 2
9 6 3

Original Matrix2:
5 1 9 11
2 4 8 10
13 3 6 7
15 14 12 16
Rotated Matrix2:
15 13 2 5
14 3 4 1
12 6 8 9
16 7 10 11
在这里插入图片描述

http://www.ds6.com.cn/news/86343.html

相关文章:

  • 酒店网站模版app运营推广是干什么
  • ps最好用的素材网站大专网络营销专业好不好
  • wordpress网站背景设置方法一键优化
  • wordpress文章中添加表情无锡seo优化
  • 网页设计与网站建设在线测试答案网络营销推广的方法
  • 哪里有网站做爰视频杭州seo服务公司
  • 广东省人民政府网官网关键词排名优化公司
  • 建设网站前端电商培训心得体会
  • 方正隶变简体可以做网站用么制作网站需要什么软件
  • 一般做网站用什么语言品牌营销策略四种类型
  • 做外贸铝材哪个网站比较好广州网站优化公司
  • 建设银行中国建设银行北京网站优化平台
  • 个人建网站的步骤郑州seo地址
  • 做网站的得花多少钱广州网络推广服务商
  • 网站开发经常遇到的问题google搜索引擎入口下载
  • 做网站建设百度公司官网招聘
  • 做网站都可以做什么国际网络销售平台有哪些
  • 网站制作钱合肥网络推广营销
  • 潍坊专业建站脱发严重是什么原因引起的
  • 腾冲网站建设上海有哪些优化网站推广公司
  • 宁波seo外包引流推广广州seo顾问服务
  • 能下短视频网站做牙搜收录批量查询
  • 网站后台挂马怎么处理全网营销是什么
  • 六安做网站seo镇江seo快速排名
  • wordpress中文版切换百度seo如何做
  • 七星彩投注网站建设中文搜索引擎排名
  • 重庆市住房和城乡建设厅官方网站优化网站制作方法大全
  • 网站构架怎么做山东网站建设
  • 西安手机网站建设有免费做网站的吗
  • 商城网站功能文档企业管理培训课程视频