博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】Rotate Image(middle)
阅读量:7247 次
发布时间:2019-06-29

本文共 1195 字,大约阅读时间需要 3 分钟。

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?

 

思路:我的思路,先沿对角线对称,再左右对称。

void rotate(int **matrix, int n) {    //先沿对角线对称    for(int i = 0; i < n; i++)    {        for(int j = 0; j < i; j++)        {            int tmp = matrix[i][j];            matrix[i][j] = matrix[j][i];            matrix[j][i] = tmp;        }    }    //再左右对称    for(int c = 0; c < (n + 1) / 2; c++)    {        for(int r = 0; r < n; r++)        {            int tmp = matrix[r][c];            matrix[r][c] = matrix[r][n - c - 1];            matrix[r][n - c - 1] = tmp;        }    }    return;}

 

 

大神一步到位的思路:找到每个圈要相互顺时针交换的4个位置,交换。

class Solution {public:    void rotate(vector
> &matrix) { int n = matrix.size(); if(n<=1) return; for(int i = 0; i!=n/2;i++) //行 圈数 { for(int j = i;j!=n-1-i;j++) { swap(matrix[i][j],matrix[j][n-1-i]); swap(matrix[n-1-j][i],matrix[i][j]); swap(matrix[n-1-i][n-1-j],matrix[n-1-j][i]); } } } inline void swap(int &a,int &b) { a = b+a; b = a-b; a = a-b; }};

 

转载地址:http://kfnbm.baihongyu.com/

你可能感兴趣的文章
DNS 域名解析服务器---案例详解
查看>>
疑似电信版GALAXY S4现身官网 或配八核处理器
查看>>
我的Linux生涯之系统语言环境及中文输入法的操作
查看>>
c#获取当前页面名字
查看>>
客户端自动化技术漫谈
查看>>
mysql 优化之 查询
查看>>
TCP协议中的三次握手和四次挥手(图解)
查看>>
YII assets使用
查看>>
未来已来——工作空间 WorkSpace 和物联网 IoT (2)
查看>>
从零开始玩人工智能-机器人服务-05
查看>>
Google API V2申请及Google Map简单应用例子
查看>>
CXF开发WebService客户端
查看>>
实现一个简单的等待进度盘
查看>>
安全、高效、专业 —— 码云企业版
查看>>
PHP全角转半角
查看>>
GetMessage()与PeekMessage(),以及WM_PAINT消息相关
查看>>
谷歌阻止宏基搭载不兼容的Android设备
查看>>
MySql双机热备解决方案
查看>>
在线参考
查看>>
关于MyEclipse工程部署不能实时同步到Tomcat问题的解决
查看>>