Java 中将矩阵旋转 180 度2024年9月10日 | 阅读 9 分钟 在本节中,我们将讨论如何在Java 中将矩阵旋转 180 度。在此问题中,给出一个方阵,我们需要将其旋转 1800。 示例 1 输入 4 6 7 8 9 3 2 1 9 0 4 5 8 0 3 2 输出 2 3 0 8 5 4 0 9 1 2 3 9 8 7 6 4 旋转矩阵 180 度的思路有几种方法可以解决此问题,但在本节中,我们将讨论以下方法:
让我们从最简单的方法开始。 朴素方法考虑上面的示例。我们注意到我们正在以反序打印输入矩阵的行,从最底行的向上移动。 例如,如果输入数组有 5 行,则首先打印第 5 行。之后,打印第 4 行,然后打印第 3 行,依此类推。 让我们看看最简单方法的实现。 文件名: RotateMatrix.java 输出 For the following matrix: 4 6 7 8 9 3 2 1 9 0 4 5 8 0 3 2 The rotated matrix at 180 degree is: 2 3 0 8 5 4 0 9 1 2 3 9 8 7 6 4 For the following matrix: 4 7 8 6 7 9 2 1 9 1 9 0 5 4 3 5 6 7 2 1 8 9 0 5 1 The rotated matrix at 180 degree is: 1 5 0 9 8 1 2 7 6 5 3 4 5 0 9 1 9 1 2 9 7 6 8 7 4 使用转置矩阵以下算法描述了如何使用矩阵转置的概念来解决此问题。 步骤 1:计算给定矩阵的转置。 步骤 2:反转转置矩阵的列。 步骤 3:在上一步中反转列后,再次找到矩阵的转置。 步骤 4:反转步骤 3 中找到的矩阵的列。 例如,如果我们有一个输入矩阵 14 27 38 46 57 79 52 31 39 11 99 80 15 24 43 45 56 97 82 51 78 79 60 25 41 那么它的转置将是 14 79 99 45 78 27 52 80 56 79 38 31 15 97 60 46 39 24 82 25 57 11 43 51 41 现在,我们将反转其列 57 11 43 51 41 46 39 24 82 25 38 31 15 97 60 27 52 80 56 79 14 79 99 45 78 再次,我们将转置矩阵。 57 46 38 27 14 11 39 31 52 79 43 24 15 80 99 51 82 97 56 45 41 25 60 79 78 再次,我们将反转其列。 41 25 60 79 78 51 82 97 56 45 43 24 15 80 99 11 39 31 52 79 57 46 38 27 14 以下程序描述了上述方法的实现。 文件名: RotateMatrix1.java 输出 For the following matrix: 4 6 7 8 9 3 2 1 9 0 4 5 8 0 3 2 The rotated matrix at 180 degree is: 2 3 0 8 5 4 0 9 1 2 3 9 8 7 6 4 For the following matrix: 4 7 8 6 7 9 2 1 9 1 9 0 5 4 3 5 6 7 2 1 8 9 0 5 1 The rotated matrix at 180 degree is: 1 5 0 9 8 1 2 7 6 5 3 4 5 0 9 1 9 1 2 9 7 6 8 7 4 通过交换位置如我们在上述方法中所见,需要两次找到矩阵的转置。此外,还需要两次反转列。因此,我们可以进行一些优化以获得更好的解决方案。 在此方法中,我们将交换不同位置的值。请注意以下程序。 文件名: RotateMatrix2.java 输出 For the following matrix: 4 6 7 8 9 3 2 1 9 0 4 5 8 0 3 2 The rotated matrix at 180 degree is: 2 3 0 8 5 4 0 9 1 2 3 9 8 7 6 4 For the following matrix: 4 7 8 6 7 9 2 1 9 1 9 0 5 4 3 5 6 7 2 1 8 9 0 5 1 The rotated matrix at 180 degree is: 1 5 0 9 8 1 2 7 6 5 3 4 5 0 9 1 9 1 2 9 7 6 8 7 4 复杂度分析 在上面的程序中,我们遍历矩阵的每一行和每一列。这导致时间复杂度为 O(R * C),其中 R 是输入矩阵的行大小,C 是输入矩阵的列大小。 请注意,我们不使用任何辅助空间来存储数据;对于交换数据,我们使用同一个输入数组,这导致空间复杂度为 O(1)。 |
在本节中,我们将学习什么是 xylem(木质部)和 phloem(韧皮部)数,并创建 Java 程序来检查给定的数字是 xylem 还是 phloem。xylem 和 phloem 数的程序经常出现在 Java 编码测试和学术界。Xylem 和 Phloem 数 一个数字 N...
阅读 2 分钟
互质数组的元素排列方式,使其相邻对显示的最大公约数值等于 1。我们需要计算将整数数组转换为互质格式所需的最小插入次数。这种数值分析很重要,因为它需要...
5 分钟阅读
理解 BWT(Burrows-Wheeler Transform) 为了改进数据压缩,一种称为 Burrows-Wheeler Transform (BWT) 的数据转换技术,它重新排列字母字符串。这种方法由 Michael Burrows 和 David Wheeler 创建,通常用于预处理数据,以便压缩方法可以更好地处理...
阅读 6 分钟
在编程世界中,一个高效可靠的集成开发环境 (IDE) 是一个关键工具。它提高了生产力,简化了开发,并为程序员提供了功能丰富的环境。随着云计算的出现,IDE 已成为开发人员实用且易于访问的选择...
阅读 3 分钟
Java 是一种通用且广泛使用的编程语言,二十多年来一直是软件开发的重要组成部分。Java 以其平台独立性、安全特性和广泛的库而闻名,是每位有志于成为或已经是经验丰富的开发人员都应该了解的语言。在...
阅读 4 分钟
? 理解数据类型的大小对于任何编程语言中高效的内存管理至关重要。在 Java 中,int 的大小取决于平台,这意味着它在不同的系统上可能有所不同。在本文中,我们将探讨确定大小的各种技术...
阅读 3 分钟
给定一个字符串 str,我们的任务是找到要构成回文的子字符串,并且它们应该是给定字符串的所有不同的回文子字符串。示例 1:输入:字符串 str = "abbcbbbe" 输出:不同的回文子字符串的总数为 8。它们...
阅读 10 分钟
Java 是一种多功能编程语言,以其丰富的类和方法库而闻名,这些库使开发人员能够创建复杂且交互式的图形用户界面 (GUI)。在 Java 中创建 GUI 组件时,setBounds() 方法起着至关重要的作用。在本节中,...
阅读 4 分钟
在 Java 中,所有给定序列的最长公共子序列称为。使用 LCS 的原因是限制子序列的元素在原始序列中占据连续的位置。在原始序列中以相同相对...的序列。
阅读 4 分钟
数字签名是一种验证数字消息和文档权威性的机制。它因提供比其他签名更高的安全性而非常受欢迎。在 Java 中,使用 JDK 安全 API 来创建和实现数字签名。在本节中,我们将...
阅读 12 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India