程序员面试金典第一章:数组与字符串(6) 像素翻转
来源:互联网 发布:聊城js fs复合保温模板 编辑:程序博客网 时间:2024/05/01 01:31
1.1 题目描述
有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。
给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。
测试样例:[[1,2,3],[4,5,6],[7,8,9]],3
1.2解题思路
思路1:必须原地址进行转换顺时针旋转,先上下翻转,然后沿着主对角线进行反转逆时针旋转,先沿着对角线进行翻转,再上下翻转
class Transform {public: vector<vector<int> > transformImage(vector<vector<int> > mat, int n) { // write code here if(n <= 1 || mat.size() != n || mat[0].size() != n) return mat; //先上下翻转 for(int i = 0; i < n / 2; ++i) { for(int j = 0; j < n; ++j) { swap(mat[i][j], mat[n - i - 1][j]); } } //沿着主对角线实现翻转 //如果是逆时针翻转则先翻主对角线,再上下翻转 for(int i = 0; i < n; ++i) { for(int j = i + 1; j < n; ++j) { swap(mat[i][j], mat[j][i]); } } return mat; }};
tips:
1.判断mat是不是大小为n的方阵,并且应当判断一下n是不是大于1
0 0
- 程序员面试金典第一章:数组与字符串(6) 像素翻转
- 程序员面试金典第一章:数组与字符串(2) 原串翻转
- 程序员面试金典第一章:数组与字符串(8) 翻转子串
- 像素翻转(程序员面试金典)+数组
- 程序员面试金典:数组--像素翻转、清除行列
- 程序员面试金典第一章:数组与字符串(5) 基本字符串压缩
- 《程序员面试金典》像素翻转
- 程序员面试金典 1.6 像素翻转
- 【程序员面试金典】像素翻转
- 程序员面试金典(6):像素翻转(python)
- 程序员面试金典第一章:数组与字符串(1) 确定字符互异
- 程序员面试金典第一章:数组与字符串(3) 确定两串乱序同构
- 程序员面试金典第一章:数组与字符串(4) 空格替换
- 程序员面试金典第一章:数组与字符串(7)清除行列
- 程序员面试金典: 9.1数组与字符串 2写翻转字符串函数reverse(char* str)
- 《Cracking the Coding Interview程序员面试金典》----像素翻转
- 【程序员面试金典】数组与字符串
- 面试6之像素(矩阵)翻转
- iOS9、iOS10 HTTPS 网络请求
- HTML(5)表格
- LightOJ - 1259 Goldbach`s Conjecture
- 使用WebCollector遇到的异常—java.io.IOException: Premature EOF
- nrf52832 SDK 相关问题
- 程序员面试金典第一章:数组与字符串(6) 像素翻转
- JavaScript:オブジェクトの宣言とリスト追加
- Fourie Transform of Dirac Comb
- 树及树的遍历
- h265
- memcached内存管理机制详解
- iOS native 调用 js 方法
- git 命令
- C#多线程同步(八)【ReaderWriterLockSlim】