精华内容
下载资源
问答
  • 方阵顺时针旋转90度

    2021-04-05 22:08:03
    # -*- coding:utf-8 -*- class Solution: def rotateMatrix(self, matrix... # 由于是方阵,则先以主对角线为轴进行交换 for i in range(len(matrix)): for j in range(i, len(matrix)): matrix[i][j], matrix[j].

    在这里插入图片描述

    # -*- coding:utf-8 -*-
    
    class Solution:
        def rotateMatrix(self, matrix, n):
            # write code here
            # 由于是方阵,则先以主对角线为轴进行交换
            for i in range(len(matrix)):
                for j in range(i, len(matrix)):
                    matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
                    
            # 在交换
            for i in range(len(matrix)):
                matrix[i] = matrix[i][::-1]
                
            return matrix
    
    展开全文
  • /** * Created by lxw, liwei4939@126.com on 2017/11/2. * 将一方阵顺时针旋转90度 * 使用分圈处理方式 */ public class rotateMatrix { public void rotate(int[][] matrix){ int tR = 0; int tC = 0;
    /**
     * Created by lxw, liwei4939@126.com on 2017/11/2.
     * 将一方阵顺时针旋转90度
     * 使用分圈处理方式
     */
    public class rotateMatrix {
    
        public void rotate(int[][] matrix){
            int tR = 0;
            int tC = 0;
            int dR = matrix.length - 1;
            int dC = matrix[0].length - 1;
            while (tR < dR){
                rotateEdge(matrix, tR++, tC++, dR--, dC--);
            }
        }
    
        public void rotateEdge(int[][] matrix, int tR, int tC, int dR, int dC){
            int times = dC - tC;
            int tmp = 0;
            for (int i =0; i< times; i++){
                tmp = matrix[tR][tC + i];
                matrix[tR][tC + i] = matrix[dR -i][tC];
                matrix[dR -i][tC] = matrix[dR][dC -i];
                matrix[dR][dC -i] = matrix[tR + i][dC];
                matrix[tR + i][dC] = tmp;
            }
        }
    
        public static void main(String[] args){
            rotateMatrix tmp = new rotateMatrix();
            int[][] matrix = {{1, 2, 3, 4},{5, 6, 7, 8}, {9, 10, 11, 12},
                    {13, 14, 15, 16}};
            tmp.rotate(matrix);
            for (int[] arr: matrix){
                for (int i=0; i< arr.length; i++){
                    System.out.print(arr[i]+ " ");
                }
                System.out.println();
            }
        }
    
    }
    

    展开全文
  • Java 数组转置 方阵顺时针旋转90度

    万次阅读 2014-10-24 08:55:42
    方阵顺时针旋转90 方法一:可以看出,将二维数组顺时针旋转 90 ,就是将其转置后的数组的列进行前后交换(即第一列变为最后一列,第二列变为倒数第二列) 方法二:通过观察,可以看出: ...

    一维数组转置(首尾交换)

    public class array {
    	public static void main(String args[]){
    		int data [] =new int [] {1,2,3,4,5,6};
    		exchange(data);
    		print1(data);
    	}
    	//首尾交换
    	public static void exchange(int temp[]){
    		int head=0;
    		int tail=temp.length-1;
    		for(int i=0;i<temp.length/2;i++){
    			int k=temp[head];
    			temp[head]=temp[tail];
    			temp[tail]=k;
    			head++;
    			tail--;
    		}
    	}
    	//输出
    	public static void print1(int temp[]){
    		for(int s=0;s<temp.length;s++){
    			System.out.println(temp[s]);
    		}
    	}
    
    }
    

    二维数组转置


    public class helloword {
    	public static void main(String args[]){
    		int data [][] = new int [][] {{1,2,3},{4,5,6},{7,8,9}};
    		reverse(data);
    		print1(data);
    	}
    	//将矩阵转置
    	public static void reverse(int temp [][] ){
    		for(int i=0;i<temp.length;i++){
    			for(int j=i;j<temp[i].length;j++){
    				int k=temp[i][j];
    				temp[i][j]=temp[j][i];
    				temp[j][i]=k;
                  }
    		}
    	}
    	//将矩阵输出
    	public static void print1(int temp[][]){
    		for(int i=0;i<temp.length;i++){
    			for(int j=0;j<temp[i].length;j++){
    				System.out.print(temp[i][j]+"\t");
    			}
    			System.out.println();
    		}
    	}
    	
    }
    

     

    方阵顺时针旋转90


    方法一:可以看出,将二维数组顺时针旋转90度,就是将其转置后的数组的列进行前后交换(即第一列变为最后一列,第二列变为倒数第二列)

    方法二:通过观察,可以看出:

    1.  列号变为行号
    2. n-行号)变为列号(其中n为方阵维数减1



     

    若要将矩阵顺时针旋转180,两次调用旋转90度的函数就可以。

    方法一、方法二不仅针对三维方阵,其他维数的方阵也适合。

     

     

     

    方法一:


    public class helloword {
    	public static void main(String args[]){
    		int data [][] = new int [][] {{1,2,3},{4,5,6},{7,8,9}};
    		reverse(data);
    		exchange(data);
    		print1(data);
    	}
    	//将矩阵转置
    	public static void reverse(int temp [][] ){   
    		for(int i=0;i<temp.length;i++){
    			for(int j=i;j<temp[i].length;j++){
    				int k=temp[i][j];
    				temp[i][j]=temp[j][i];
    				temp[j][i]=k;
                }
    		}
    	}
    	//将转置后的矩阵的列交换(第一列跟最后一列交换,第二列跟倒数第二列交换)
    	public static void exchange(int temp[][]){
    		int a=0;
    		int b=temp.length-1;
    		for(int i=0;i < (temp.length)/2;i++){
    			for(int j=0;j<temp.length;j++){
    				int k=temp[j][a];
    				temp[j][a]=temp[j][b];
    				temp[j][b]=k;
    			}
    			a++;
    			b--;
    		}
    	}
    	//将矩阵输出
    	public static void print1(int temp[][]){
    		for(int i=0;i<temp.length;i++){
    			for(int j=0;j<temp[i].length;j++){
    				System.out.print(temp[i][j]+"\t");
    			}
    			System.out.println();
    		}
    	}
    	
    }

    方法二:


    public class arrayEx {
    	public static void main(String args[]){
    		int data [][] =new int [][] {{1,2,3},{4,5,6},{7,8,9}};
    		rotate(data);
    		print1(data);
    	}
    	//旋转90度
    	public static void rotate(int temp[][]){
    		int len=temp.length;
    		int b [][]=new int [len][len];
    		for(int i=0;i<len;i++){
    			for(int j=0;j<len;j++){
    				b[j][len-1-i]=temp[i][j];
    			}
    		}
    		for(int i=0;i<len;i++)
    			for(int j=0;j<len;j++)
    				temp[i][j]=b[i][j];
    	}
    	//输出
    	public static void print1(int temp[][]){
    		for(int i=0;i<temp.length;i++){
    			for(int j=0;j<temp[i].length;j++){
    				System.out.print(temp[i][j]+"\t");
    			}
    			System.out.println();
    		}
    	}
    
    }


    展开全文
  • 以下是关于方阵顺时针旋转的实现代码。需要的朋友参考下
  • 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N...

    记录一下思路:

    来源: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

    返回:[[7,4,1],[8,5,2],[9,6,3]]

    思路:第一步:先将矩阵以次对角线互换 (如果是逆时针则为主对角线)
            第二步:交换第i行到第n-1-i行

     

    转载于:https://www.cnblogs.com/huashanqingzhu/p/5924239.html

    展开全文
  • 对一个方阵转置,就是把原来的行号变列号,原来的列号变行号 例如,如下的方阵: 1 2 3 4 ...但,如果是对该方阵顺时针旋转(不是转置),却是如下结果: 13 9 5 1 14 10 6 2 15 11 7 3 ...
  • 行列方阵顺时针旋转

    2013-04-29 13:24:00
    时间紧张,先记一笔,后续优化与完善。 例如,如下的方阵: ...顺时针旋转,是却如下结果: 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4 每日一道理 书籍好比一架梯子,它能引领人们登上文化的殿堂;...
  • 目录 一、问题描述 二、问题求解 (1)方阵顺时针旋转(以3阶方阵为例) 问题分析: 程序设计: ...(2)方阵转置(以3阶方阵为例) ...按顺时针旋转90度后方阵为: 7 4 1 8 5 2 9 8 3 转置后的方阵为: 1 4...
  • 把一个方阵顺时针旋转

    千次阅读 2013-04-07 17:07:06
    /* * 转方阵 对一个方阵转置,就是把原来的行号变列号,原来的列号变行号 例如,如下的方阵: 1 2 3 4 5 6 7 8 9 10 11 12 ... 但,如果是对该方阵顺时针旋转(不是转置),却是如下结果: 13 9
  • C++矩阵顺时针旋转90度

    千次阅读 2019-05-30 16:53:28
    将一个矩阵顺时针旋转90度, 比如给定一个矩阵A: 旋转之后为: 2. 思路 和打印矩阵一样,这里也是从宏观出发,先旋转最外圈的,然后在旋转内圈的正方形. 关于我们旋转一个正方形代码我们只需要找到规律就好了.这里我们...
  • 矩阵顺时针旋转90度

    万次阅读 2018-11-14 11:03:23
    矩阵顺时针旋转90度
  • 今天小编就为大家分享一篇Java实现矩阵顺时针旋转90度的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 题目描述: 输入一个N阶方阵(0<...10),输出此方阵顺时针旋转M(0<=M<=10000)次后的方阵 旋转举例:(如下四个三阶方阵从左到右为数字围绕中心顺时针旋转) 1 2 3 7 4 1 9 8 7 3 6 9 4 5 6 8 5 2 ...
  • 方阵顺时针旋转(python)

    千次阅读 2019-05-08 21:04:20
    题目描述: 输入一个N阶方阵(0<...10),输出此方阵顺时针旋转M(0<=M<=10000)次后的方阵 旋转举例:(如下四个三阶方阵从左到右为数字围绕中心顺时针旋转) 1 2 3 7 4 1 9 8 7 3 6 9 4 5 6 8 5 2 ...
  • 1 2 3 4 这个旋转一层 1 2 3 4 5 6 7 8 9 也是一层,因为5不用旋转 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 旋转两层 所以需要旋转的...
  • 数据—将一个N*N矩阵顺时针旋转90度

    千次阅读 2019-05-09 23:42:31
    1.6 问题:将一个N*N矩阵顺时针旋转90度(其他形如顺时针180,或者逆时针90都一样的思路),不占用额外空间 实现 按照规律一层一层逐个进行旋转 /** * 1.6 问题:将一个N*N矩阵顺时针旋转90度(其他形如顺时针...
  • 做题思路:程序清单:#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std;...//将一个二维N*N矩阵顺时针旋转90° //先转置,再逆序 /* 1 2 3 4 1 5 9 13 13 9 ...
  • void rotate(int* x, int rank) { int* y = (int*)malloc(rank*rank*sizeof(int)); // 看不懂 for(int i=0; i<rank * rank; i++) { y[(i%rank)*rank + rank-i/rank-1] = x[i]; // 看不懂 ...}
  • 1 /** 2 * 将n*n矩阵顺时针旋转90度 3 * @param mat 4 * @param n 矩阵的阶数 5 * @date 2016-10-7 6 * @author shaobn 7 */ 8 public static void rotateMatrix(int[][]...
  • python 将矩阵顺时针旋转90度

    千次阅读 2020-08-10 14:55:08
    例:[[1,2,3],[4,5,6],[7,8,9]] 变为 [[7, 4, 1], [8, 5, 2], [9, 6, 3]] ...def tans90(matrix): rows,cols = len(matrix),len(matrix[0]) for i in range(rows): for j in range(cols): if
  • 【定义】 二维数组也称为矩阵(Matrix),关于矩阵的算法经常在各种考试及面试中出现,它主要考查被测试者的逻辑思维能力、...【问题】将矩阵顺时针旋转90度 如图 【分析】 这题是北京航天大学考研试题。对于...
  • 将n*n矩阵顺时针旋转90度输出

    千次阅读 2018-03-29 21:05:43
    将n*n矩阵顺时针旋转90度输出#include&lt;iostream&gt; #include&lt;vector&gt; #include&lt;math.h&gt; using namespace std; int main() { vector&lt;int&gt; m; int tmp; ...
  • 将N * N的举证(正方形)顺时针旋转90度,如下图,将左边的矩阵旋转为右边的矩阵; 要求额外空间复杂度为O(1), 也即原地旋转。 1 2 3   7 4 1 4 5 6   8 5 2 7 8 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,096
精华内容 438
关键字:

方阵顺时针旋转90度