算法——旋转正方形矩阵

huozhonghun 2018-10-27 原文

算法——旋转正方形矩阵

给定一个整形正方形矩阵arr,请把改矩阵调整成顺时针选择90度的样子。

示例:
1 2 3 
4 5 6 
7 8 9 
旋转后:
7 4 1 
8 5 2 
9 6 3 
package suanfa;

public class demo3 {
    public static void main(String[] args) {
        int[][] arr={{1,2,3},{4,5,6},{7,8,9}};
        xuanze(arr);
    }
    private static void xuanze(int[][] arr) {
        int a=0,b=0,c=arr.length-1,d=arr[0].length-1;//初始化左上坐标(a,b)和右下坐标(c,d)
        while(a<c&&b<d){//两个坐标相遇或超过时结束循环
            //先旋转外圈,再旋转内圈
            //两个坐标向中心走
            rotate(arr,a++,b++,c--,d--);
        }
    }

    private static void rotate(int[][] arr, int a, int b, int c, int d) {
        int count=a;//每条边的旋转起点
        while(count<d-b){//限制旋转的终点
            int temp=arr[a][b+count];
            arr[a][b+count]=arr[c-count][b];
            arr[c-count][b]=arr[c][d-count];
            arr[c][d-count]=arr[a+count][d];
            arr[a+count][d]=temp;
            count++;
        }
    }

}

 

 

发表于 2018-10-27 17:04 火中魂 阅读() 评论() 编辑 收藏

 

版权声明:本文为huozhonghun原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/huozhonghun/p/9862317.html

算法——旋转正方形矩阵的更多相关文章

  1. 如何在O(1)时间复杂度获取栈中最大值和最小值

    问题描述:   如何在O(1)时间复杂度获取栈中的最大值和最小值? 问题分析:   普通栈规定的push(入栈 […]...

  2. 递归 —— 二分查找法 —— 归并排序

    PS:什么是递归、二分查找、归并排序。 递归排序大家都不陌生,递归简单的说就是自己在没有达到目的的同时在此调用 […]...

  3. 十一、散列表(一)

    一、散列思想 散列表的英文叫“Hash Table”,也叫它“哈希表”或者“Hash表”。 散列表用的是数组支 […]...

  4. Android版数据结构与算法(七):赫夫曼树

    版权声明:本文出自汪磊的博客,未经作者允许禁止转载。 近期忙着新版本的开发,此外正在回顾C语言,大部分时间没放 […]...

  5. 并查集(一)并查集的几种实现

    概述 并查集是一种特别的数据结构,在解决连通行问题屡试不爽。以下代码均为java语言的实现 并查集的作用先总体 […]...

  6. 迷宫问题(DFS)

    声明:图片及内容基于https://www.bilibili.com/video/BV1oE41177wk?t […]...

  7. 数据结构与算法–Boyer-Moore和Rabin-Karp子字符串查找

    数据结构与算法–Boyer-Moore和Rabin-Karp子字符串查找 Boyer-Moore字 […]...

  8. 二叉排序树

    声明:图片及内容基于https://www.bilibili.com/video/BV15f4y197v1?f […]...

随机推荐

  1. __pycache__

    __pycache__ 最近在使用python写一个串口模块的时候,偶然发现运行脚本之后,在工程文件夹下面出现 […]...

  2. iconfont字体图标的使用方法–超简单!

    我之前因为项目用bootstrap比较多,所以使用font awesome字体图标比较多,后来接触到了icon […]...

  3. Surface Pro电磁笔故障

    最开始来自于淘宝的消息,说当苏菲带回家之后发现电磁笔不管用了,就是放上去完全没反映了。当时只是以为出了什么故障 […]...

  4. 【ASP.NET Core】EF Core – “导航属性”

    “导航属性”是实体框架用得算是比较频繁的概念。 首先,它是类型成员,其次,他是属性,这不是 F 话,而是明确它 […]...

  5. AOP(面向切面编程)大概了解一下

    前言 上一篇在聊MemoryCache的时候,用到了Autofac提供的拦截器进行面向切面编程,很明显能体会到 […]...

  6. 表达式引擎aviator

    Aviator是一个轻量级、高性能的Java表达式执行引擎, 本文内容主要来自于官方文档 简介 包依赖 使用手 […]...

  7. .net持续集成测试篇之Nunit常见断言

    系列目录 Nunit测试基础之简单断言 在开始本篇之前需要补充一些内容,通过前面搭建Nunit测试环境我们知道 […]...

  8. Arduino可穿戴教程之第一个程序——Blink(一)

    Arduino可穿戴教程之第一个程序——Blink(一) Arduino可穿戴教程之第一个程序——Blink( […]...

展开目录

目录导航