cc150:数组:1.6
来源:互联网 发布:不同域名对应同一个ip 编辑:程序博客网 时间:2024/04/28 13:58
代码
1.6 题目
给定一副N*N的图像,其中每个像素的大小为4个字节,编写一种方法,将图像旋转90度。不占用额外内存空间能否做到?
算法
复杂度:O(n^2)
* 一圈一圈的转,一个一个的交换
https://yq.aliyun.com/articles/3878
http://www.2cto.com/kf/201410/341031.html
http://www.acmerblog.com/leetcode-solution-rotate-image-6325.html
a[i][j]
a[n-1-j][i]
a[n-1-i][n-1-j]
a[n-1-(n-1-j)][n-1-i]=a[j][n-1-i]
代码
import java.util.*;class Solution{ public static void rotate(int[][] matrix) { int n = matrix.length; int limit = n/2; for(int i=0;i< limit; i++){ for(int j=i;j<n-1-i;j++){ int temp = matrix[i][j]; matrix[i][j] = matrix[n-1-j][i]; matrix[n-1-j][i] = matrix[n-1-i][n-1-j]; matrix[n-1-i][n-1-j] = matrix[j][n-1-i]; matrix[j][n-1-i] = temp; } } } public static void main(String[] args){ int[][] test={{1,2,3},{4,5,6},{7,8,9}}; int n=test.length; rotate(test); for(int i=0;i<test.length;i++){ System.out.println(" "); for(int j=0; j<test[i].length;j++) System.out.print(test[i][j]+" "); } }}
算法 2
副对角线反转,然后水平中线反转
// LeetCode, Rotate Image// 思路 1,时间复杂度O(n^2),空间复杂度O(1)class Solution {public: void rotate(vector<vector<int>>& matrix) { const int n = matrix.size(); for (int i = 0; i < n; ++i) // 沿着副对角线反转 for (int j = 0; j < n - i; ++j) swap(matrix[i][j], matrix[n - 1 - j][n - 1 - i]); for (int i = 0; i < n / 2; ++i) // 沿着水平中线反转 for (int j = 0; j < n; ++j) swap(matrix[i][j], matrix[n - 1 - i][j]); }};
0 0
- cc150:数组:1.6
- cc150:数组:基础
- cc150:数组:1.7
- CC150 1.6 String Compression
- CC150
- cc150第一章JAVA字符串和数组总结
- cc150:使用一个数组实现3个栈
- [cc150] 3.1
- [cc150] 2.5
- [cc150] 1.4
- [cc150] 1.3
- [cc150] 1.2
- [cc150] 1.1
- cc150-1.1
- cc150,1.4
- cc150,1.5
- cc150-8.1
- cc150 4.1
- leetcode笔记--Majority Element I & II
- 【WebService框架-CXF】——CXF入门实例
- Mac环境下SVN常用命令
- 138. Copy List with Random Pointer
- 用自己的电脑开wifi热点(没营养,却可以在妹子面前装逼的实用技能)
- cc150:数组:1.6
- UVA 11688
- Scala 并行和并发编程-Futures 和 Promises
- 139. Word Break
- servlet 实现验证码
- linux下libusb使用
- Apache Flink fault tolerance源码剖析(六)
- java的一些知识(八)
- CodeIgniter学习笔记 Item10--CI总结精华