算法总结之 将正方形矩阵顺时针转动90度

数组与矩阵:将正方形矩阵顺时针转动90°(C++版) //★题目:将正方形矩阵顺时针转动90° //要求:给定一个N×N的矩阵matrix,把这个矩阵调整成顺时针转动90°后的形式。要求额外空间复杂度为O(1) // 例如:1 2 3 4 调整后为 13 9 5 1 // 5 6 7 8 14 10 6 2 // ... 阅读详情

算法总结之 将正方形矩阵顺时针转动90度

给定一个 N * N的矩阵,把这个矩阵调整成顺时针转动90度后的形式

  要求额外空间复杂度为O(1)

 

这里仍然使用分圈处理方式

   如果你愿意一层一层一层的拨开我的心~  哈哈哈

   由外到内的旋转

    上代码一目了然:

 

package TT;

public class Test16 {

    public static 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 static void  rotateEdge(int[][] m ,int tR, int tC, int dR, int dC){
       int times = dC-tC;
       int tmp = 0;
       for(int i =0; i!=times; i++){
           tmp=m[tR][tC+i];
           m[tR][tC+i]=m[dR-i][tC];
           m[dR-i][tC] = m[tR+i][dC];
           m[tR+i][dC] = tmp;
       }
   }
    
    public static void main(String[] args){
        
        int[][] m = new int[3][3];
        m[0][0]=1; m[0][1]=2;m[0][2]=3;
        m[1][0]=4; m[1][1]=5;m[1][2]=6;
        m[2][0]=7;m[2][1]=8;m[2][2]=9;
        
        rotate(m);
        
        System.out.println(m[0][0]);
        System.out.println(m[0][2]);
        
    }
    
    
}

随便抽查了几个数:

正方形的好做很多,正方形的题目比矩形的考虑维度少了一个,就是一行和一列时候的问题

public class Test6 {
    public static int[][] revolveRetangle(int[][] arr) {
        int col = 0;
        int row = 0;
        int endCol = arr[0].length - 1;
        int endRow = arr.length - 1;
        while (row != endRow && col != endCol) { // 控制最外层 到层的走势
            arr = alterPosition(arr, row, endRow, col, endCol);
            row++;
            col++;
            endRow--;
            endCol--;
        }
        return arr;
    }
    // 出来一层  参考系是 天花板那个边上的点
    public static int[][] alterPosition(int[][] arr, int row, int rowEnd, int col, int colEnd) {
        int offset = 0; //定位到要移动的那个元素
        int movPositionLen = rowEnd; //移动多少距离  距离是慢慢缩小的(与具体旋转时候坐标位置相关)
        while (offset<rowEnd) {  //正方形 移动的每个边长的移动寿命都是一样的 没有特殊情况
            //每一次循环 控制的是每一个边上面 点  的移动
            int temp = arr[row+offset][col];
            arr[row+offset][col]=arr[row][col+movPositionLen-offset]; //offset控制的是AD边的移动 (col-offset)是个整体
            arr[row][col+movPositionLen-offset]=arr[row+movPositionLen-offset][col+movPositionLen];
            arr[row+movPositionLen-offset][col+movPositionLen]= arr[row+movPositionLen][col+offset];
            arr[row+movPositionLen][col+offset]=temp;
            offset++;
        }
        return arr;
    }
    public static void main(String[] args) {
        int[][] arr = new int[3][3];
        arr[0][0] = 1;
        arr[1][0] = 2;
        arr[2][0] = 3;
        arr[0][1] = 4;
        arr[1][1] = 5;
        arr[2][1] = 6;
        arr[0][2] = 7;
        arr[1][2] = 8;
        arr[2][2] = 9;
        int[][] result = revolveRetangle(arr);

        for (int i=0; i<result.length; i++){
           for (int j=0; j<result[i].length; j++){
               System.out.print(result[i][j]+",");
           }
        }
    }
}

我解释下吧,这样小伙伴们容易理解

画个图:

  

 

 由于是顺时针移动 每个点的移动范围是有限制的  而且都是一个坐标不变 改变另一个坐标   offset记录的是每一次移动的点滴 移动后就是另一帮点 在做交换了

 并且 当用A的位置作为参考系时候 它交给了temp 

谁来取代他 然后反推就可以知道了 反推出那个坐标 所以设置了个movPositionLen 变量 因为每次反推时候 是需要有变化的

小伙伴们 懂我的意思了吗?如果你们有更好的思路私信我哈~ 

 

posted @ 2017-08-25 15:14 toov5 阅读( ...) 评论( ...) 编辑 收藏
正方形矩阵旋转90度python实现 【题目】   给定一个N × N的矩阵 matrix,把这个矩阵调整成顺时针转动90°后的形式。   例如:   1  2  3  4   5  6  7  8   9  10  11  12   13  14 15  16      顺时针转动90°的结果为:   13   9  5   1   14  10  6  2   15  11  7  3 ... 阅读详情

相关推荐

二十一:将正方形矩阵顺时针旋转90°

题目 给定一个正方形矩阵, 只用有限几个变量, 实现矩阵中每个位置的数顺时针转动 90度, 比如如下的矩阵 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 矩阵应该被调整为: 12 8 4 0 13 9 5 1 14 10 6 2 15 11 7 3 实现 import java.util.*; public class Main { public static void main(String[] args) { Scanner in =

谁D了我的BUG 408

顺时针九十度旋转矩阵(两种方法)

题目:给定一个n*n的矩阵,顺时针把矩阵旋转90度。 比如说{{1,2,3}{4,5,6}{7,8,9}}。顺时针旋转90度为{{7,4,1}{8,5,2}{9,6,3}}。 解法一:时间复杂度为o(n*n),空间复杂度为o(n)。步骤:(1)把矩阵的行当做一个整体,逆序矩阵中的行,也就是说把matrix[i]行和matrix[len - i]进行交换。(2)在交换后的矩阵中,按照对角

yang20141109的专栏 2万+

【算法】顺时钟90度转动方形矩阵

给定一个正方形矩阵,只用有限几个变量,实现矩阵中每个位置的数顺时针转动。因为知道这个是一个正方形,假设以中心点X为中心旋转90度,那么。90度,比如如下的矩阵。

九师兄 260

矩阵翻转90度

矩阵逆时针翻转90度: 假设矩阵中一数字坐标为(i,j),逆时针翻转后的坐标为(n-1-j,i),要实现这一过程,首先(i,j)->(j,i),即沿着左对角线将对角线两侧的数字交换,之后(j,i)->(n-1-j,i),即将矩阵沿着横中轴将上下行中的元素进行交换,如果是4*4矩阵,也就是交换1,4行和交换2,3行; 矩阵顺时针翻转90度: 假设矩阵中一数字坐标为(i,j),顺时针翻转后的坐标

xc889078的专栏 3941

矩阵顺时针旋转90°算法详解与编程实现

htmltable {th, td {th {pre {简介:矩阵操作是编程中的基础技能,广泛应用于图像处理、机器学习和线性代数等领域。本文重点介绍矩阵顺时针旋转90度的原理与实现方法,适用于正方形和非正方形矩阵。通过分步解析旋转过程,并结合Python等语言的代码示例,帮助读者掌握元素重排的核心逻辑。该操作通过行列转换与索引映射实现,是理解二维数据变换的重要基础。

weixin_32389853的博客 1557

Clang Static Analyzer 使用教程:本地 + CMake + GitHub Actions 自动静态分析实战

本文介绍了ClangStaticAnalyzer静态代码分析工具的使用方法。该工具基于Clang/LLVM,可检测C/C++代码中的内存泄漏、空指针等常见错误。主要内容包括:安装指南(Ubuntu/macOS/Windows)、命令行使用方法、CMake项目集成方案、GitHub Actions自动化分析配置,以及HTML报告生成与查看。文章还提供了官方资源链接,帮助开发者系统掌握从本地调试到持续集成的完整静态分析工作流,提升代码质量保障能力。适用于需要在开发过程中实施静态分析的C/C++项目。

u014358031的博客 2159

正方形矩阵顺时针旋转90度

矩阵原地旋转

ლ旺旺掀被的博客 300

面向多目标跟踪的数据关联方法研究综述

摘要:多目标跟踪技术在军事和民用领域具有广泛应用,其核心挑战在于数据关联问题。本文系统梳理了数据关联的主要解决方法,首次将经典算法分为确定性关联和概率性关联两大类。确定性关联(如NNDA、GNN、MHT)采用"硬分配"策略,计算效率高但易受噪声干扰;概率性关联(如PDA、JPDA、PMHT)通过"软分配"处理不确定性,更适合复杂场景。文章详细分析了各类算法的原理、适用条件和优缺点,并探讨了智能学习等新兴技术在视觉跟踪等领域的应用。研究指出,尽管随机集滤波等新方法出现,

qq_43416206的博客 1141

旋转矩阵(顺时针90度)

普通套公式法的矩阵旋转。

ZhaoHuaNuan的博客 2425

FOC项目知识点总结三 | 完全搞懂 Clarke 与 Park 变换(附动图,仿真文件以及详细讲解数学推导过程)

本文目的,最终可以完整推算两种变换 Clarke 变换 首先先看我们需要用到的两种坐标系 1. 自然坐标系 abcabcabc 我们知道,通过三相逆变电路,我们可以画出一个自然坐标系 abcabcabc ,即三相电压的坐标系,通入的电流在这三轴坐标系中变化: 将三个矢量相加合并在一起就如下图所展现: 使用三个坐标轴来表示十分的麻烦与不直观,因为其是非正交的,于是乎我们想要将其转化成使用两个正交的坐标轴来表示,于是乎便有了 Clarke变换。 Clarke 变换的作用: 将基于三轴二维的定子静止坐标系的各

Wilson Huang的博客 3万+

云漾AI创作平台实战:如何用GPT4.0+Midjourney快速生成商业级插画(附Prompt模板)

本文详细介绍了如何利用云漾AI创作平台结合GPT4.0和Midjourney快速生成商业级插画。通过智能文案生成与视觉化工作流,大幅提升创作效率,适用于电商、社交媒体等多种场景。文章包含实用Prompt模板和参数调整技巧,帮助设计师和内容创作者高效产出专业插画。

weixin_29251567的博客 222

数组4——二维数组1——将矩阵顺时针旋转90度

【定义】 二维数组也称为矩阵(Matrix),关于矩阵的算法经常在各种考试及面试中出现,它主要考查被测试者的逻辑思维能力、下标的灵活应用及对C语言的掌握程度,这种题目通常有较高的难度,通常需要二重循环实现。经典的矩阵算法有将矩阵旋转90度、魔方阵、拉丁方阵、蛇形方阵、内螺旋矩阵、外螺旋矩阵、逆螺旋矩阵。 【问题】将矩阵顺时针旋转90度 如图 【分析】 这题是北京航天大学考研试题。对于...

凌空的桨 1万+

MIT Mini Cheetah--仿真流程

MIT Mini Cheetah–仿真 摘要 由于官方提供代码中,控制仿真环境中的猎豹机器人运动需要遥控器来控制。官方默认推荐使用logitech Gamepad F310游戏手柄:We use the Logitech F310 controller. There’s a switch in the back, which should be in the “X” position. The controller needs to reconnected if you change the switch

Galaxy_Robot的博客 5916

数据结构与算法--给定一个正方形矩阵matrix原地调整成顺时针90度转动的样子

【代码】数据结构与算法--给定一个正方形矩阵matrix原地调整成顺时针90度转动的样子。

m0_37564426的博客 197

告别全局搜索!7种SRP-PHAT快速算法实战对比:哪个更适合你的麦克风阵列?

本文深入探讨了7种SRP-PHAT改进算法在声源定位领域的实战表现,包括SRC、CFRC、SPF等方案。通过对比计算效率、定位精度和环境鲁棒性等核心指标,为不同场景(如会议室、智能家居、工业机器人)提供算法选型建议,帮助工程师优化麦克风阵列性能。

weixin_42546392的博客 399

ThingsBoard教程(七):模拟设备遥测

前言 各位读者好,截止目前,ThingsBoard系列文章已经做了六篇,分别是 ThingsBoard教程(一):ThingBoard介绍及安装 ThingsBoard教程(二):租户,租户配置,部件组模块的使用 ThingsBoard教程(三):系统设置模块的使用 ThingsBoard教程(四):规则链简介与操作 ThingsBoard教程(五):客户,资产管理 ThingsBoard教程(六):设备管理 上一篇我们讲解了如何使用设备管理来对设备进行增删改查,和设备配置的一些基本概念,本篇文章就带大

知无涯 4586

将正方形矩阵顺时针旋转90度

将正方形矩阵顺时针旋转90度 题目描述 给定一个n*n的矩阵matrix,请把这个矩阵顺时针转动90度。 输入描述: 输入包含多行,第一行一个整数n(1≤n≤200)n(1 \leq n \leq 200)n(1≤n≤200),代表矩阵的行数和列数,接下来n行,每行n个整数,代表矩阵matrix(1≤matrix[i][j]≤40000)matrix(1 \leq matrix[i][j] \leq 40000)matrix(1≤matrix[i][j]≤40000)。 输出描述: 输出旋转后的矩阵(包含n

MIC10086的博客 1287

DeepQA: A Unified Transcriptome-Based Aging Clock Using Deep Neural Networks

摘要: 本研究针对转录组衰老时钟存在的关键局限——仅在健康样本训练导致对患病个体预测偏差的问题,提出DeepQA,一种基于专家混合架构与新型Hinge-MAE损失函数的深度学习模型。通过同时利用健康与患病个体的异质数据训练,DeepQA显著提升预测精度:在健康个体上MAE比现有方法低1.5年,且是首个能正确处理五类疾病条件的模型。其创新性体现在: 方法学突破:Hinge-MAE损失函数消除健康/患病样本的训练偏差,专家混合架构高效整合多队列数据; 流程革新:摒弃传统基因预筛选步骤,通过显著图分析直接识别衰老

qq_44050612的博客 125

算法——正方形矩阵旋转90度

旋转正方形矩阵 【题目】 给定一个整型正方形矩阵matrix,请把该矩阵调整成顺时针旋转90度的样子。 【要求】 额外空间复杂度为O(1)。 【例如】 旋转前: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 旋转后: 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4 这道题的思路跟旋转打印矩阵是一个思路,一层一层解决,先...

2551的博客 3152

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

正方形矩阵 顺时针旋转90度

1 package my_basic.class_3; 2 3 /*正方形矩阵 顺时针旋转矩阵 90度*/ 4 public class Code_06_RotateMatrix { 5 6 public static void rotate(int[][] matrix) { 7 int tr = 0; 8 ...

dezhewei9015的博客 574

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

【题目】给定一个N*N的矩阵matrix,把这个矩阵调整成顺时针转动90度后的形式。 要求:额外空间复杂度为O(1) public class Rotate90 { public static void rotate(int[][] matrix) { int tC = 0; int tR = 0; int dC = matrix.length; int dR = matrix[...

gkq_tt的博客 543

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

矩阵宏观调度:将正方形矩阵原地顺时针旋转90°度

1)矩阵的宏观调度,非常有趣,按照AB点同步走,或者abcd固定外圈,一批一批数据调度完,往内继续循环调度 2)本题的关键,就在先tmp记录一批数据,拿另一批数据旋转过来覆盖,abcd固定不动,从一个方向到一个方向一个个搬移,下标要搞清楚 3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

weixin_46838716的博客 935

数组和矩阵问题:将正方形矩阵顺时针转动90度

【题目】   给定一个 N*N 的矩阵 matrix, 把这个矩阵调整成顺时针转动90度后形式。   例如:   1   2   3   4   5   6   7   8   9   10  11  12   13  14  15  16   顺时针转动90度后为:   13  9   5   1   14  10  6   2   15  11  7  ...

weixin_33910759的博客 288

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

题目 给定一个N*N的矩阵matrix,把这个矩阵调整成顺时针转动90度后的形式。要求额外空间复杂度为O(1)。 代码实现 public void rotate(int[][] matrix) { int tR = 0; int tC = 0; int dR = matrix.length - 1; int dC = ma...

Forat 335

【简单】将正方形矩阵顺时针转动90度-Java

package live.every.day.ProgrammingDesign.CodingInterviewGuide.ArrayAndMatrix; import java.util.Arrays; /** * 将正方形矩阵顺时针转动90度 * * 【题目】 * 给定一个NXN的矩阵matrix,把这个矩阵调整成顺时针转动90°后的形式。 * * 【要求】 * 额外空间复杂度为O(1)。 * * 【难度】 * 简单 * * 【解答】 * 这里仍使用分圈处理的方式,在矩阵中

了解➔熟悉➔掌握➔精通 968
上一篇: SQL中的5种常用的聚集函数
下一篇: 算法总结之 需要排序的最短子数长度
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值