
48 旋转图像
发布日期:2021-05-07 21:50:02
浏览次数:20
分类:精选文章
本文共 1788 字,大约阅读时间需要 5 分钟。
1. 问题描述:
给定一个 n × n 的二维矩阵表示一个图像。
将图像顺时针旋转 90 度。
说明:
你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。
示例 1:
给定 matrix =
[ [1,2,3], [4,5,6], [7,8,9] ],原地旋转输入矩阵,使其变为:
[ [7,4,1], [8,5,2], [9,6,3] ] 示例 2:给定 matrix =
[ [ 5, 1, 9,11], [ 2, 4, 8,10], [13, 3, 6, 7], [15,14,12,16] ],原地旋转输入矩阵,使其变为:
[ [15,13, 2, 5], [14, 3, 4, 1], [12, 6, 8, 9], [16, 7,10,11] ]2. 思路分析:
① 根据矩阵旋转的特点可以知道,旋转之后的图像行数是从最后一行往上,列数是从第一列开始,我最开始的想法是使用一个字符串来拼接转置后的数字,然后将字符串的数字转变后存储到原数组中,但是感觉还是有点麻烦
② 在官方提供的代码中可以知道可以先对矩阵进行转置,然后对每一行中以行的中间元素为界限交换左右两边的元素使其达到原地旋转数组的目的
3. 代码如下:
我自己写的:
import java.util.Scanner;public class Solution { public static void rotate(int[][] matrix) { String s = ""; for (int i = 0; i < matrix[0].length; ++i){ for (int j = matrix.length - 1; j >= 0; --j){ /*i表示的是列, j表示的是行*/ s += matrix[j][i] + " "; } } int count = 0, r = matrix.length, c = matrix[0].length; String t = ""; for (int i = 0; i < s.length(); ++i){ char c1 = s.charAt(i); if (c1 != ' ') t += c1; else { //通过元素个数计算出二维数组的位置 matrix[count / c][count - c * (count / c)] = Integer.parseInt(t); count++; t = ""; } } }}
转置数组进行每一行元素的旋转的:
class Solution { public void rotate(int[][] matrix) { int n = matrix.length; // transpose matrix for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { int tmp = matrix[j][i]; matrix[j][i] = matrix[i][j]; matrix[i][j] = tmp; } } // reverse each row for (int i = 0; i < n; i++) { for (int j = 0; j < n / 2; j++) { int tmp = matrix[i][j]; matrix[i][j] = matrix[i][n - j - 1]; matrix[i][n - j - 1] = tmp; } } }}
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月11日 02时50分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
one + two = 3
2021-05-08
sctf_2019_easy_heap
2021-05-09
PyQt5之音乐播放器
2021-05-09
Redis进阶实践之十八 使用管道模式提高Redis查询的速度
2021-05-09
SQL注入
2021-05-09
MPI Maelstrom POJ - 1502 ⭐⭐ 【Dijkstra裸题】
2021-05-09
Problem A - Sequence with Digits (数学推导)
2021-05-09
Problem 330A - Cakeminator (思维)
2021-05-09
LeetCode75 颜色分类 (三路快排C++实现与应用)
2021-05-09
C语言+easyX图形库的推箱子实现
2021-05-09
调试vs2019代码的流程
2021-05-09
脱壳与加壳-加壳-6-代码实现加密导入表
2021-05-09
Typora配置PicGo时,提示Failed to fetch
2021-05-09
ASP.NET CORE MVC 实现减号分隔(Kebab case)样式的 URL
2021-05-09
bcolz的新操作
2021-05-09
zmq的send
2021-05-09
阿里钉钉面试题
2021-05-09
C++中找资源或者函数的方法
2021-05-09
delete对象时会自动调用类的析构函数
2021-05-09
POD类型
2021-05-09