矩阵处理—旋转正方形矩阵

news2024/11/27 10:19:56

与其明天开始,不如现在行动!

文章目录

  • 旋转正方形矩阵
    • 1 题目描述
    • 2 解决思路
    • 3 代码实现
  • 💎总结


旋转正方形矩阵

1 题目描述

有一个n*n的矩阵,现在把整个矩阵顺时针旋转90°,如图:

rotate

2 解决思路

  1. 设置四个指针,分别在矩阵的四个角
  2. 先旋转最外层,然后逐渐旋转里层
  3. 四个角是一组,每次顺时针移位

3 代码实现

public class RotateMatrix {
    public static void rotateMatrix(int[][] matrix) {
        if (matrix == null) {
            return;
        }
        // 定义四个角
        int startRow = 0;
        int startColumn = 0;
        int endRow = matrix.length - 1;
        int endColumn = matrix[0].length - 1;
        // 每次循环都会向里走步层
        while (startRow <= endRow) {
            rotateEdge(matrix, startRow++, startColumn++, endRow--, endColumn--);
        }
    }

    private static void rotateEdge(int[][] matrix, int startRow, int startColumn, int endRow, int endColumn) {
        int temp = 0;
        // 顺时针交换四个数据
        for (int i = 0; i < endRow - startRow; i++) {
            temp = matrix[startRow][startColumn + i];
            matrix[startRow][startColumn + i] = matrix[endRow - i][startColumn];
            matrix[endRow - i][startColumn] = matrix[endRow][endColumn - i];
            matrix[endRow][endColumn - i] = matrix[startRow + i][endColumn];
            matrix[startRow + i][endColumn] = temp;
        }
    }

    public static void main(String[] args) {
        int[][] matrix = new int[5][5];
        int num = 1;
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                matrix[i][j] = num++;
            }
        }
        rotateMatrix(matrix);
    }
}


💎总结

本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1291672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023人工智能和市场营销的融合报告:创造性合作的新时代需要新的原则

今天分享的人工智能系列深度研究报告&#xff1a;《2023人工智能和市场营销的融合报告&#xff1a;创造性合作的新时代需要新的原则》。 &#xff08;报告出品方&#xff1a;M&CSAATCHITHINKS&#xff09; 报告共计&#xff1a;11页 生成型人工智能的兴起和重要性 生成式…

vue的data

类型&#xff1a;Object | Function 限制&#xff1a;组件的定义只接受 function。 详细&#xff1a; Vue 实例的数据对象。Vue 会递归地把 data 的 property 转换为 getter/setter&#xff0c;从而让 data 的 property 能够响应数据变化。对象必须是纯粹的对象 (含有零个或多个…

localhost工具:本地代码的远程之路 | 京东云技术团队

在日常的开发过程中&#xff0c;本地代码远程调试一直是最理想的开发状态。本文通过介绍京东集团内开发的一个轻量简单的小工具”localhost”&#xff0c;从多角度的方案思考&#xff0c;到原理介绍&#xff0c;到最终的方案落地&#xff0c;在开发阶段发现问题&#xff0c;解决…

短视频账号剪辑矩阵+无人直播系统源头开发

抖去推爆款视频生成器&#xff0c;通过短视频矩阵、无人直播&#xff0c;文案引流等&#xff0c;打造实体商家员工矩阵、用户矩阵、直播矩阵&#xff0c;辅助商家品牌曝光&#xff0c;团购转化等多功能赋能商家拓客引流。 短视频矩阵通俗来讲就是批量剪辑视频和批量发布视频&am…

洗眼镜机怎样?清洗机什么牌子好质量过硬、爆款超声波清洗机排名

戴眼镜的朋友真的可以试试超声波清洗机&#xff0c;家里备着一个超声波清洗机&#xff0c;即使是眼镜脏了也不用再麻烦的跑去眼镜店清洗了&#xff01;由于目前市面上超声波清洗机的品牌实在太多&#xff0c;让想要体验超声波清洗机的朋友挑花了眼也找不到一款合适的&#xff0…

Centos7如何配置firewalld防火墙规则

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…

每日一题 1466. 重新规划路线(树,DFS)

根据 connections 建立无向树从 0 开始深搜&#xff0c;每次调用 dfs 时判断路径方向是否正确 class Solution:def minReorder(self, n: int, connections: List[List[int]]) -> int:to defaultdict(set)edge defaultdict(list)for con in connections:edge[con[0]].appe…

JS实现网页页面的框架(demo)

采用JS实现网页页面的框架 采用的技术点有html&#xff0c;css&#xff0c;JS&#xff0c;jQuery 成品&#xff1a; HTML&#xff1a; <html><head><meta charset"utf-8"><title></title><link rel"stylesheet" href&…

Kafka -- 初识

目录 kafka是什么 Topic Partition Broker Cousumer CousumerGroup Offset reblance broker 消息存储 Isr kafka是什么 Kafka 是一个分布式的消息引擎&#xff0c;能够发布和订阅消息流&#xff08;类似于消息队列&#xff09; 以容错的、持久的方式存储消息流 多分区…

软件工程之UML建模

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、建模基础 1.建模的底层逻辑 用一个公式表达建模的底层逻辑&#xff1a;建模 图形 逻辑 现实的抽象&#xff0c;用一句概括即是用图形逻辑…

智慧园区可视化综合管理平台建设方案,智能化、数字化才是关键

园区作为城市的基本单元&#xff0c;是经济发展的重要载体。随着我国经济的快速发展&#xff0c;各类工业园区、办公园区等园区的规划建设也越来越多。伴随着互联网新兴技术的发展和应用&#xff0c;智慧园区已成为当今城市规划和社会发展的关注焦点&#xff0c;今天我们来介绍…

【AIGC】Midjourney的使用技巧

Midjourney介绍 《Midjourney》是一款2022年3月面世的AI绘画工具&#xff0c;创始人是David Holz。只要输入想到的文字&#xff0c;就能通过人工智能产出相对应的图片&#xff0c;耗时只有大约一分钟。 Midjourney依托于Discord社区平台对外提供服务。使用前需要准备好飞机。…

ROS小练习——参数设置

目录 一、参数名获取 二、参数修改 1、代码修改 C python 2、命令行修改 3、启动时修改 4、launch文件传参修改 一、参数名获取 rosparam list 二、参数修改 1、代码修改 C #include "ros/ros.h"int main(int argc, char *argv[]) {ros::init(argc,argv,…

文心一言大模型应用开发入门

本文重点介绍百度智能云平台、文心一言、千帆大模型平台的基本使用与接入流程及其详细步骤。 注册文心一言 请登录文心一言官方网站 https://yiyan.baidu.com/welcome 点击登录&#xff1b;图示如下&#xff1a; 请注册文心一言账号并点击登录&#xff0c;图示如下&#xff1…

【WPF.NET开发】WPF中的窗口

目录 1、窗口类 2、实现窗口 2.1 为 MSBuild 配置窗口 3、窗口生存期 3.1 打开窗口 3.2 窗口激活 3.3 关闭窗口 3.4 窗口生存期事件 4、窗口位置 4.1 最顶层窗口和 z 顺序 5、窗口大小 6、大小调整属性的优先级顺序 7、窗口状态 8、窗口外观 8.1 重设大小模式 …

HeyGen推出Avatar2.0:AI视频翻译工具引领虚拟分身创作新时代

在数字创意领域迈向新的里程碑&#xff0c;HeyGen公司正式推出了Avatar2.0&#xff0c;这是一款令人惊叹的AI视频翻译工具&#xff0c;仅需短短5分钟&#xff0c;用户即可在手机上打造一个逼真的虚拟分身。HeyGen的这一最新创新标志着他们在多模态内容生成领域的持续引领地位&a…

Ubuntu18安装(重启黑屏问题)

1. F10 进入bios&#xff0c;选择u盘里的ubuntu镜像 2.进入使用ubuntu&#xff0c;下载 3.重启&#xff0c;esc 4.ubuntu 安e进入 5. nomodeset&#xff08;&#xff09; F10 保存启动 6. 7.没有网 手机usb提供网络 下载有限网卡驱动

什么牌子的开放式耳机好用?手把手教你选,小白必看!

开放式耳机大揭秘&#xff0c;小白也能秒变发烧友&#xff0c;在这个喧嚣的音乐世界&#xff0c;究竟哪个牌子的开放式耳机好用&#xff1f;戴着这个问题我会手把手教你如何挑选&#xff0c;不仅仅是推荐&#xff0c;还会详细解析各个品牌的特色&#xff0c;让你在挑选的过程中…

从 ByteHouse 网关,看如何进一步提升 OLAP 引擎性能

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 随着数字化转型的加速&#xff0c;企业面临着海量数据收集、处理和分析挑战。ClickHouse因其分析速度快、高性能的特点&#xff0c;被开发者广泛使用。 作为连接客户…

R语言手册30分钟上手

文章目录 1. 环境&安装1.1. rstudio保存工作空间 2. 创建数据集2.1. 数据集概念2.2. 向量、矩阵2.3. 数据框2.3.1. 创建数据框2.3.2. 创建新变量2.3.3. 变量的重编码2.3.4. 列重命名2.3.5. 缺失值2.3.6. 日期值2.3.7. 数据框排序2.3.8. 数据框合并(合并沪深300和中证500收盘…