zoukankan      html  css  js  c++  java
  • 《程序员代码面试指南》第八章 数组和矩阵问题 将正方形矩阵顺时针转动90

    题目

    将正方形矩阵顺时针转动90
    

    java代码

    package com.lizhouwei.chapter8;
    
    /**
     * @Description: 将正方形矩阵顺时针转动90
     * @Author: lizhouwei
     * @CreateDate: 2018/4/28 22:16
     * @Modify by:
     * @ModifyDate:
     */
    public class Chapter8_2 {
        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++, dR--, tC++, dC--);
            }
        }
    
        public void rotateEdge(int[][] matrix, int tR, int dR, int tC, int dC) {
            int times = dC - tC;
            int temp = 0;
            for (int i = 0; i < times; i++) {
                temp = 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] = temp;
            }
        }
    
        //测试
        public static void main(String[] args) {
            Chapter8_2 chapter = new Chapter8_2();
            int[][] matrix = {{1, 2, 3, 4}, {5,6,7,8}, {9, 10, 11, 12}, {13, 14, 15, 16 }};
            chapter.rotate(matrix);
            for (int i = 0; i < matrix.length; i++) {
                for (int j = 0; j < matrix[0].length; j++) {
                    System.out.print(matrix[i][j]+" ");
                }
                System.out.println( );
            }
        }
    }
    

    结果

  • 相关阅读:
    转载:Package by feature, not layer
    [翻译][架构设计]The Clean Architecture
    消息处理管道
    Pool:小对象缓存or复用
    View事件分发
    动静分离-前后端分离部署
    MySQL 执行计划中Extra的浅薄理解
    探索java世界中的日志奥秘
    记一次转不过弯的递归
    Spring MVC
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/8969859.html
Copyright © 2011-2022 走看看