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

[LeetCode]—Rotate Image 矩阵90度翻转

Rotate Image

 

You are given an n x n 2D matrix representing an image.

Rotate the image by 90 degrees (clockwise).

Follow up:
Could you do this in-place?


分析:如果手动模拟,将依次从外向内移动4条边,比较复杂。

            可以考虑将90度翻转,转换为矩阵对角线、水平、垂直对称问题。90度翻转有如下转换关系:



有了90度的对称旋转方法,180度与 270度都可以通过多次90度旋转解决,但同样也可以直接研究其旋转关系。 

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

class Solution{
public:
    void rotate(vector<vector<int> > &matrix){    
        int n=matrix.size();
        if(n==1)return;

        //以副对角线为轴翻转。
        int i,j;
        for(i=0;i<n;i++){
            for(j=n-1-i;j>=0;j--){
                if((n-1-i)==j)continue;  //对角线上的点不用翻转
                swap(matrix[i][j],matrix[n-1-j][n-1-i]);
            }
        }

        //以水平中轴线为轴线翻转。
        int bott=n-1;
        i=0;
        while(i<bott){
            for(j=0;j<n;j++){
                swap(matrix[i][j],matrix[bott][j]);
            }

            i++;
            bott--;
        }
        return; 
    }
};



相关文章:

  • “国家使命”图书第一批权威发布
  • Windows 7 ship party
  • LeetCode]—Rotate List 循环右移链表
  • 推荐阅读:太极拳的奥妙-专访七十肖维佳老翁现场展示
  • 一个真实的项目经历,很多东西大家可以借鉴下
  • 无法启动调试 未安装silverlight
  • [LeetCode]—Copy List with Random Pointer 深度复制带“任意指针”的链表
  • DB2使用Data Studio连接报ERRORCODE=-4499 SQLSTATE=08001
  • [LeetCode]—Implement strStr() 寻找子串匹配第一个位置 (KMP)
  • MFC图形函数(转载)
  • [LeetCode]—Add Binary 两个字符串二进制相加
  • 一个VC写的模拟时钟
  • [LeetCode]—Longest Palindromic Substring 最长回文子串
  • 串行通信技术SERDES
  • 从两种SQL表连接写法来了解过去
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Cumulo 的 ClojureScript 模块已经成型
  • JavaScript实现分页效果
  • Java程序员幽默爆笑锦集
  • laravel 用artisan创建自己的模板
  • Spring Boot快速入门(一):Hello Spring Boot
  • Vue ES6 Jade Scss Webpack Gulp
  • Vultr 教程目录
  • 百度地图API标注+时间轴组件
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 读懂package.json -- 依赖管理
  • 机器学习 vs. 深度学习
  • 前端技术周刊 2019-01-14:客户端存储
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 小而合理的前端理论:rscss和rsjs
  • Hibernate主键生成策略及选择
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​Spring Boot 分片上传文件
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • $.ajax()方法详解
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)Google的Objective-C编码规范
  • (转)一些感悟
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .bashrc在哪里,alias妙用
  • .NET MVC之AOP
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net 受管制代码
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET正则基础之——正则委托
  • @JsonFormat与@DateTimeFormat注解的使用