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( );
            }
        }
    }
    

    结果

  • 相关阅读:
    3185 队列练习 1 3186 队列练习 2
    1063 合并果子
    堆排序
    奇怪的电梯
    3411 洪水
    2010 求后序遍历
    1729 单词查找树
    3137 栈练习1
    2821 天使之城
    括弧匹配检验(check.cpp)
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/8969859.html
Copyright © 2011-2022 走看看