python——n*n矩阵顺时针旋转90度

  先设计思路,以4*4矩阵为例,不难发现其实如果把下列同色的行和列交换,其实就能达到目标

不难发现,实现有如下规律:

  i = 0
    j = 1,2,3
  i = 1
    j = 2 ,3
  i= 2
    j = 3

再将data[i][j] 和data[j][i] 交换即可,而涉及到交换就会想到,有个引入第三个变量来实现交换的方式,于是实现代码如下:

data = [[i for i in range(4)] for i in range(4)] #定义一个4*4的数组
for i in range(len(data)-1):
	for j in range(len(data[i])):
		if j > i :
			tmp = data[i][j]
			data[i][j] = data[j][i]
			data[j][i] = tmp

  你没看错,这样就已经搞定了,是不是很神奇!如果想实现n*n的 ,修改下代码即可,这里我就不补充了。

    

  

时间: 2024-10-10 07:03:18

python——n*n矩阵顺时针旋转90度的相关文章

python之n*n矩阵顺时针旋转90度

先设计思路,以4*4矩阵为例,不难发现其实如果把下列同色的行和列交换,其实就能达到目标 不难发现,实现有如下规律: i = 0 j = 1,2,3 i = 1 j = 2 ,3 i= 2 j = 3 再将data[i][j] 和data[j][i] 交换即可,而涉及到交换就会想到,有个引入第三个变量来实现交换的方式,于是实现代码如下: data = [[i for i in range(4)] for i in range(4)] #定义一个4*4的数组 for i in range(len(d

Rotate Image,N*N矩阵顺时针旋转90度

public class RotateImage { public void rotate(int[][] matrix) { if(matrix.length == 1 && matrix[0].length == 1) { return; } int n = matrix.length; for(int i = 0; i < n-1; i ++) { for(int j = i; j < n-1-i; j ++) { int temp = matrix[i][j]; mat

二维数组(矩阵)之将矩阵旋转90度

将矩阵旋转90度: 题目描述: 例如将一个5*5的矩阵顺时针旋转90度:旋转前 1       2        3         4         5 6       7        8         9        10 11    12      13      14       15 16    17      18      19       20 21    22      23      24       25 选转后: 21     16      11       6

矩阵旋转90度(keep it up)

一张图像表示成NxN的矩阵,图像中每个像素是4个字节,写一个函数把图像旋转90度. 你能原地进行操作吗?(即不开辟额外的存储空间) 这个题第一感觉就是一次交换矩阵的元素: 比如 3*3 矩阵 1 2 3 4 5 6 7 8 9 先处理第一行,一次逆时针旋转四个元素,下面是二次做的 3 2 9          3 6 9 4 5 6          2 5 8 1 8 7          1 4 7 第一次         第二次 如果是5*5的矩阵 1   2   3   4   5 6

方阵原地顺时针旋转90度

记录一下思路: 来源:http://www.nowcoder.com/questionTerminal/17ab1e527c504df09a600e1af09d9a60 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度.给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256.测试样例:[[1,2,3],[4,5,6],[7,8,9]],3 返回

O(1)空间复杂度实现n*n矩阵旋转90度

O(1)空间复杂度实现n*n矩阵旋转90度, #include <iostream> using namespace std; #define ARRAY_SIZE 5 void print_two_array (int a[][ARRAY_SIZE]) { cout << endl;    for (int i=0; i<ARRAY_SIZE; i++) { for (int j=0; j<ARRAY_SIZE; j++) {    cout << a[i

算法题:矩阵旋转90度

#include <iostream> #include <iomanip> using namespace std; void Grial(int (*a)[5],int n) { //数组顺时针旋转90度. //边界值的考虑让我小小的思考了一下. int temp; int startX = 0; int startY = 0; int j = 0; while (startX < n/2) { startX = j; for (int i = j; i < n -

leetcode&mdash;&mdash;Rotate Image(二维数组顺时针旋转90度)

题目: 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? 分析: 二维数组a[n][n]顺时针旋转90度,要解决这个问题,无疑,第一件事儿就是找规律. 当n=1时,不用动了. 当n=2时, 旋转之后变为 有: a[0][0] = a[1][0] a[1][0] = a[1

CC150:将一个矩阵旋转90度

一张图像表示成n X n的矩阵,写一个函数把图像旋转90度.不开辟额外的存储空间 我们假设要将图像逆时针旋转90度.原图如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 逆时针旋转90度后的图应该是: 4 8 12 16 3 7 11 15 2 6 10 14 1 5 9 13 我们要如何原地进行操作以达到上面的效果呢?可以分两步 第一步交换主对角线两侧的对称元素, 第二步交换第i行和第n-1-i行,即得到结果. 看图示: 原图:           第一