1 /*
 2     题目描述:
 3         有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。
 4         给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。
 5         测试样例:
 6             [[1,2,3],[4,5,6],[7,8,9]],3
 7             返回:[[7,4,1],[8,5,2],[9,6,3]]
 8 */
 9 /*
10     将矩阵顺时针旋转90度
11     一圈一圈的进行旋转(交换)。
12     eg:
13         1 2 3
14         4 5 6
15         7 8 9
16     先旋转外圈:
17         首先交换1->3->9->7->1;
18         然后交换2->6->8->4->2;
19 */
20 #include <iostream>
21 #include <vector>
22 using namespace std;
23
24 void rotateEdge(vector<vector<int> > &m, int tr, int tc, int dr, int dc){
25     int times = dc - tc;
26     int tmp = 0;
27     for (int i = 0; i < times; i++){
28         tmp = m[tr][tc+i];
29         m[tr][tc+i] = m[dr-i][tc];
30         m[dr-i][tc] = m[dr][dc-i];
31         m[dr][dc-i] = m[tr+i][dc];
32         m[tr+i][dc] = tmp;
33     }
34 }
35 vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) {
36     // write code here
37     int tR = 0;
38     int tC = 0;
39     int dR = n-1;
40     int dC = n-1;
41     while (tR < dR){
42         rotateEdge(mat, tR++, tC++, dR--, dC--);
43     }
44     return mat;
45 }
46 int main(){
47     vector<vector<int> > matrix;
48     vector<int> a;
49     a.push_back(1);
50     a.push_back(2);
51     a.push_back(3);/*
52     a.push_back(4);*/
53     matrix.push_back(a);
54
55     vector<int> b;
56     b.push_back(4);
57     b.push_back(5);
58     b.push_back(6);/*
59     b.push_back(8);*/
60     matrix.push_back(b);
61
62     vector<int> c;
63     c.push_back(7);
64     c.push_back(8);
65     c.push_back(9);/*
66     c.push_back(12);*/
67     matrix.push_back(c);
68
69     vector<vector<int> > rt;
70     rt = rotateMatrix(matrix,3);
71     for (int i = 0; i < 3; i++){
72         for (int j = 0; j < 3; j++)
73             cout << rt[i][j] << ",";
74         cout << endl;
75     }
76     return 0;
77 }

转载于:https://www.cnblogs.com/qianmacao/p/4884715.html

1-3-顺时针旋转矩阵相关推荐

  1. 牛客题霸 [顺时针旋转矩阵] C++题解/答案

    牛客题霸 [顺时针旋转矩阵] C++题解/答案 题目描述 有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度. 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于 ...

  2. 牛客题霸 NC18 顺时针旋转矩阵

    https://www.nowcoder.com/practice/2e95333fbdd4451395066957e24909cc 解决方案 Go func rotateMatrix(mat [][ ...

  3. 顺时针旋转矩阵的两种方法

    (本来是校赛的水题,没想到我太不给力..) Description 一天无聊的DDF在玩弄矩阵:他把矩阵的子矩阵旋转了. 具体来说就是给定一个n*n的初始矩阵,然后DDF每次给出三个数(x,y,r)代 ...

  4. 牛客-顺时针旋转矩阵

    题目 描述 有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度. 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵. 数据范围:0<n<300,矩阵中的值满足 0≤ ...

  5. 旋转矩阵,矩阵,共轭矩阵

    旋转矩阵,矩阵,共轭矩阵 1.旋转矩阵 1. 旋转矩阵简介 2. 性质 3. 二维空间 3.1 普通旋转 3.2 复平面 4. 三维空间 4.1 旋转 4.2 角-轴表示和四元数表示 4.3 欧拉角表 ...

  6. 自定义输入矩阵,顺时针输出或顺时针旋转后输出

    注意: c++是不支持使用变量构建数组的,虽然可以用vector的方式,但不太友好,所以我就直接构建了一个101*101的数组,就题目来说够用了. 我单独考虑了一维数组的情况,因为下面swich操作时 ...

  7. java 矩阵_(JAVA)计算机图形学与矩阵

    (JAVA)计算机图形学与矩阵 平移 旋转 变比 一)矩阵 1)矩阵的乘法运算 矩阵是计算机图形学的重要工具. 计算机图形学要常常用到 矩阵乘法(矩阵与矩阵相乘). 矩阵(Aij)m*n 与矩阵(Bi ...

  8. 牛客题霸题目及题解汇总

    牛客题霸 单链表的选择排序 C++题解/答案 牛客题霸 最少素数拆分 C++题解/答案 牛客题霸 两数之和 C++题解/答案 牛客题霸 反转链表 C++题解/答案 牛客题霸 二分查找 C++题解/答案 ...

  9. LeetCode - 48. Rotate Image

    48. Rotate Image Problem's Link -------------------------------------------------------------------- ...

  10. 2023年春招热门笔试算法题(C++)

    内容整理自网络,侵权联系删除 1.链表反转 输入:{1,2,3} 返回值:{3,2,1} struct ListNode {int val;struct ListNode *next;ListNode ...

最新文章

  1. IE浏览器Cookie信息提取工具Galleta
  2. 5种IO模式形象的比喻
  3. Android之webview与js交互
  4. 大并发下程序出错_Python并发编程理论篇
  5. HTML5 新特性
  6. 一次性存入多少钱就可以有资格跟银行商谈利息了?
  7. 使用Dockerfile构建Nginx,Tomcat,MySQL镜像
  8. 解决linux下javac -version和java -version版本显示不一致
  9. 关注VS.Net 2005
  10. [转]int String 互转的多种方法
  11. 20170810上课笔记
  12. hadoop ha环境下的datanode启动报错java.lang.NumberFormatException: For input string: 10m
  13. cmd跑绿色代码_cmd装逼代码-cmd命令,装逼
  14. ussd代码大全_USSD查询器app
  15. 读研攻略(6)—会议纪要
  16. ds5100更换电池 ibm_ibm/lenovoDS5100更换电池
  17. finecms V5 会员头像任意文件上传漏洞 附修复代码
  18. 高老师架构设计思考短句集(2)
  19. 阿里云亮眼财报背后,云的打开方式正在重塑
  20. app打包上传遇到的问题

热门文章

  1. Redis:17---常用功能之(事务)
  2. 算法(9)--两个数的最大公约数
  3. 将std::string字符串格式的数字转换为int类型的数字
  4. 通过字符串的方式读取文件的内容
  5. 密码机项目安装软件时候出现的问题以及对应的解决办法
  6. 《小狗钱钱》:理财首先应该有一种强烈的意识
  7. jackson 的注解:@JsonProperty、@JsonIgnore、@JsonFormat 用法说明
  8. 解决:bash: vim: command not found、docker 容器不识别 vi / vim 、docker 容器中安装 vim
  9. 根据一个属性,剔除 Json 中重复元素(删除 JSON 中重复的部分)
  10. 《 图解 HTTP 》读书笔记