1-3-顺时针旋转矩阵

 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

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

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

相关文章

在Linux中head命令,Linux 中 head 命令实例

原标题&#xff1a;Linux 中 head 命令实例head命令将每个文件的前10行打印到标准输出。对于多个文件&#xff0c;在每个文件前面加上一个给出文件名的头。如果没有文件&#xff0c;或者文件为-&#xff0c;则读取标准输入。如何使用head命令使用head显示/etc/passwd前十行内容…

C#中的局部类型

1. 什么是局部类型&#xff1f;C# 2.0 引入了局部类型的概念。局部类型允许我们将一个类、结构或接口分成几个部分&#xff0c;分别实现在几个不同的.cs文件中。局部类型适用于以下情况&#xff1a;(1) 类型特别大&#xff0c;不宜放在一个文件中实现。(2) 一个类型中的一部分代…

【原创】Git删除暂存区或版本库中的文件

0 基础 我们知道Git有三大区&#xff08;工作区、暂存区、版本库&#xff09;以及几个状态&#xff08;untracked、unstaged、uncommited&#xff09;&#xff0c;下面只是简述下Git的大概工作流程&#xff0c;详细的可以参见本博客的其他有关Git的文章【链接】。&#xff08;1…

linux软件依赖库,【Linux】ubuntu系统安装及软件依赖库

系统&#xff1a;安装Ubuntu 16.04.1 LTS 更新到Ubuntu 16.04.3 LTS搜狗中文输入法然后安装搜狗输入法for Linux&#xff0c;直接下载deb包&#xff0c;双击->ubuntu software-center闪退&#xff0c;通过升级系统以及重装center解决:sudo apt-get updatesudo apt-get dist-…

JMS

JMS即Java消息服务&#xff08;Java Message Service&#xff09;应用程序接口是一个Java平台中关于面向消息中间件&#xff08;MOM&#xff09;的API&#xff0c;用于在两个应用程序之间&#xff0c;或分布式系统中发送消息&#xff0c;进行异步通信。Java消息服务是一个与具体…

reStructuredText(.rst)语法规则快速入门

原文&#xff1a;http://blog.useasp.net/archive/2014/09/05/rst-file-restructuredtext-markup-syntax-quikstart.aspx?utm_sourcetuicool 简介 reStructuredText是一种轻量级的文本标记语言&#xff0c;直译为&#xff1a;重构建的文本&#xff0c;是Python中Docutils项目的…

精读linux源码,Linux基础入门的操作精读.doc

摘要&#xff1a;Linux是一套免费使用和自由传播的类Unix操作系统&#xff0c;是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想&#xf…

安卓App设计博文

安卓1080P界面设计规范解读 http://www.25xt.com/appdesign/9487.html APP设计尺寸解读&#xff1a;px、pt、ppi、dpi、dp、sp之间的关系 http://www.25xt.com/appdesign/9294.html 安卓界面设计规范 http://www.25xt.com/android转载于:https://www.cnblogs.com/tmlee/p/4894…

Android学习四、Android中的Adapter

一、Adapter的介绍 An Adapter object acts as a bridge between an AdapterView and the underlying data for that view. The Adapter provides access to the data items. The Adapter is also responsible for making a View for each item in the data set. 一个Adapter是…

linux select shell,linux之shell编程select和case用法

shell里的select用法&#xff1a;语法&#xff1a;#i/bin/bashselect 变量 in 列表do要执行的语句done举例&#xff1a;#!/bin/bashecho "What is your favourite OS?"select var in "windows" "Linux" "Gnu Hurd" "Free BSD&qu…

elasticsearch 查询(match和term)

elasticsearch 查询&#xff08;match和term&#xff09; es中的查询请求有两种方式&#xff0c;一种是简易版的查询&#xff0c;另外一种是使用JSON完整的请求体&#xff0c;叫做结构化查询&#xff08;DSL&#xff09;。 由于DSL查询更为直观也更为简易&#xff0c;所以大都使…

Andorid获取状态栏高度

在应用开发中&#xff0c;有时我们需要用代码计算布局的高度&#xff0c;可能需要减去状态栏(status bar)的高度。状态栏高度定义在Android系统尺寸资源中status_bar_height,但这并不是公开可直接使用的&#xff0c;例如像通常使用系统资源那样android.R.dimen.status_bar_heig…

linux 域名劫持,域名被劫持处理方案

首先简单说下什么是域名劫持&#xff0c;域名劫持就是在劫持的网络范围内拦截域名解析的请求&#xff0c;分析请求的域名&#xff0c;把审查范围以外的请求放行&#xff0c;否则直接返回假的IP地址或者什么也不做使得请求失去响应&#xff0c;其效果就是对特定的网址不能访问或…

在linux下修改oracle的sys和system的密码和用户解锁

修改oracle的sys和system的密码和用户解锁 1、再linux系统上sqlplus /as sysdba进入sqlplus后就可以修改sys和system的密码了2、alter user sys identified by "密码"alter user system identified by "密码"其实就是先登录到oracle然后&#xff0c;在里面…

background 与backgroundcolor区别

background 可以设置 背景颜色、背景图片、定位等 background-color 只能设置 背景颜色 转载于:https://www.cnblogs.com/sun9218333949/p/4265863.html

linux 检测蓝牙 rssi,树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)...

若该文为原创文章&#xff0c;转载请注明原文出处长期持续带来更多项目与技术分享&#xff0c;咨询请加QQ:21497936、微信&#xff1a;yangsir198808下一篇&#xff1a;敬请期待…接下来介绍树莓派蓝牙模块的开发&#xff0c;使用的协议为bluez。客户端bob&#xff0c;服务器al…

Android Studio项目整合PullToRefresh的问题记录

PullToRefresh下拉刷新在App中应用非常频繁&#xff0c;然而PullToRefresh是在ADT下开发完成的。如果要将其整合到Android Studio目录下的话颇费周折。前面的文章“Android Studio项目引入外部库注意事项(PullToRefresh)”介绍了如何将PullToRefresh的library引入到项目中。如果…

POJ 1852 Ants 分析

1、暴搜 每只蚂蚁朝向有两种&#xff0c;可以枚举n只蚂蚁的朝向&#xff0c;然后模拟蚂蚁相遇的情景&#xff0c;总共2^n中情况。 2、分析ants相碰的情况: (a->) (<-b) 变成 (<-a)(b->) 由于每只蚂蚁是相同的&#xff0c;所以等价与(<-b)(a->)&#xff0c;…

第 三 十 八 天:Linux 的 LVM 逻 辑 卷 管 理

小Q&#xff1a;书籍是全世界的营养品。生活里没有书籍&#xff0c;就好像没有阳光&#xff1b;智慧里没有书籍&#xff0c;就好像鸟儿没有翅膀。 —— 莎士比亚简介LVM&#xff1a;Logical Volume Manager&#xff08;逻辑卷管理&#xff09;&#xff…

发福利喽稀疏FFT

附介绍&#xff1a;四位来自麻省理工学院的研究人员蒂娜卡塔比&#xff08;Dina Katabi&#xff09;、海塞姆哈桑&#xff08;Haitham Hassanieh&#xff09;、比欧特因迪克&#xff08;Piotr Indyk&#xff09;和埃里克普里斯&#xff08;Eric Price&#xff09;今年1月&#…