首页 > 其他分享 >每日一题:Leetcode-48 旋转图像

每日一题:Leetcode-48 旋转图像

时间:2024-08-01 13:27:56浏览次数:19  
标签:matrix 48 int 矩阵 ++ temp 图像 Leetcode

力扣题目

解题思路

java代码

力扣题目:

给定一个 × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 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]]

解题思路:

函数 rotate 分析

  • 首先,通过第一个嵌套循环将矩阵沿着水平中轴线进行翻转。例如对于一个 3x3 的矩阵,第一行和第三行的元素相互交换位置。
    • 外层循环控制翻转的轮数,只需要进行 n/2 次,因为每次翻转两行。
    • 内层循环遍历每一列,交换对应行的元素。
  • 然后,通过第二个嵌套循环实现矩阵的转置。即把矩阵的行和列的元素进行交换。
    • 外层循环遍历每一行。
    • 内层循环从当前行的下一个位置开始,与对应列的元素进行交换。

java代码:

package org.example.mouth8;

public class Leetcode48 {
    public static void main(String[] args) {
        int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
        rotate(matrix);
        for (int[] ints : matrix) {
            for (int anInt : ints) {
                System.out.print(anInt + " ");
            }
            System.out.println();
        }
    }
    public static void rotate(int[][] matrix) {
        int n = matrix.length;
        for (int i = 0; i < n / 2; i++) {
            for (int j = 0; j < n; j++) {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[n - 1 - i][j];
                matrix[n - 1 - i][j] = temp;
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
    }
}

更多详细内容同步到公众号,感谢大家的支持!

每天都会给刷算法的小伙伴推送明日一题,并且没有任何收费项

标签:matrix,48,int,矩阵,++,temp,图像,Leetcode
From: https://blog.csdn.net/LIUCHANGSHUO/article/details/140837621

相关文章

  • RK3568之修改8250驱动实现RS485收发的自动切换
    最近项目需求,要用到RK3568搭配自制底板。整个软硬件联调过程并不顺利,特立此系列帖,记录调试中发生的一些问题和解决办法。文章目录前言调试过程及问题解决办法1.硬件修改2.软件解决1.修改设备树文件2.查找设备树对应的串口驱动文件3.修改serial.h2.修改8250_dw.c2.修改......
  • 【全网独家】OpenCV 图像特征检测与描述(Harris 角点检测、Shi-Tomasi 角点检测、SIFT
    OpenCV图像特征检测与描述在图像处理和计算机视觉中,特征检测和描述是非常重要的任务。本文将介绍几种常用的特征检测和描述方法:Harris角点检测、Shi-Tomasi角点检测、SIFT和SURF。目录介绍应用使用场景原理解释算法原理流程图及解释应用场景代码示例实现部署......
  • LeetCode 2024/8 每日一题合集
    2024-7-1LCP40.心算挑战代码实现classSolution{public:intmaxmiumScore(vector<int>&cards,intcnt){intn=size(cards);std::sort(cards.rbegin(),cards.rend());intsum=std::accumulate(cards.begin(),cards.begin()......
  • 通过旋转和裁剪来对齐 X 射线图像
    我有一个X射线图片数据库,我想对其进行图像分类-我想要:识别(不完美)矩形块的旋转旋转图像,使其处于垂直方向(肖像)形式)通过裁剪剩余的黑色空间来删除​​,以便仅保留骨头的实际照片我不完全确定如何最好地解决这个问题,这似乎是有人已经解决的问题。我尝......
  • 如何在 PySpark 中将二进制图像数据转换为 RGB 数组?
    我有一个具有以下架构的pysparkdf:root|--array_bytes:binary(nullable=true)我希望能够将其转换为图像数组。我可以使用以下代码在Pandas中完成此操作:df_pandas=df.toPandas()defbytes_to_array(byte_data):arr=np.frombuffer(byte_data,dtype=np......
  • 如何通过按键在pygame中移动图像?
    我正在用pygame制作一个简单的游戏,我想移动一张图片,但该图片似乎每次点击都会制作,这根本不是我想要的,我想通过按键来移动它,但每次时间移动了一个代码:#importmodulesimportpygamefrompygame.localsimport*importsysimportos#################pygame.ini......
  • 两数之和(LeetCode题)
    题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=......
  • LeetCode 3111. 覆盖所有点的最少矩形数目(贪心、排序)
    题目:3111.覆盖所有点的最少矩形数目思路:只需关注横坐标,对横坐标进行升序排序,然后进行贪心,求得最少的矩阵数量classSolution{public:intminRectanglesToCoverPoints(vector<vector<int>>&points,intw){vector<int>v;for(inti=0;i<poi......
  • Leetcode每日一题 20240731 3111.覆盖所有点的最少矩阵数目
    题目描述给你一个二维整数数组point,其中points[i]=[xi,yi]表示二维平面内的一个点。同时给你一个整数w。你需要用矩形覆盖所有点。每个矩形的左下角在某个点(x1,0)处,且右上角在某个点(x2,y2)处,其中x1<=x2且y2>=0,同时对于每个矩形都必须满足x2......
  • leetcode20.有效的括号、华为OD机试-(C卷,100分)- 表达式括号匹配
    leetcode20.有效的括号题目描述给定一个只包括‘(’,‘)’,‘{’,‘}’,‘[’,‘]’的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。示例1:输入:s=“()......