首页 > 其他分享 >48. 旋转图像【 力扣(LeetCode) 】

48. 旋转图像【 力扣(LeetCode) 】

时间:2024-08-22 16:50:56浏览次数:13  
标签:matrix 48 int 图像 矩阵 力扣 ++ 转置 LeetCode

一、题目描述

给定一个 n × 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]]

提示:

n == matrix.length == matrix[i].length
1 <= n <= 20
-1000 <= matrix[i][j] <= 1000

三、解题思路

  1. 基本思路:
      矩阵转置+列对称交换 【旋转 90 度是第 i 行变为倒数第 i 列】
  2. 具体思路:
    • 矩阵转置:就是交换元素 matrix[i][j] 和 matrix[j][i] 【行变列】
    • 列对称交换:就是第 i 列与倒数第 i 列交换 【第 i 行变倒数第 i 列】

四、参考代码

时间复杂度: O ( n 2 ) \Omicron(n^2) O(n2)
空间复杂度: O ( 1 ) \Omicron(1) O(1)

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int n = matrix.size();
        int mid = (n >> 1);

        for (int i = 0; i < n; i++) // 转置
            for (int j = i + 1; j < n; j++)
                swap(matrix[i][j], matrix[j][i]);

        for (int j = 0; j < mid; j++) // 列对称交换
            for (int i = 0; i < n; i++)
                swap(matrix[i][j], matrix[i][n - j - 1]);
    }
};

标签:matrix,48,int,图像,矩阵,力扣,++,转置,LeetCode
From: https://blog.csdn.net/yyh520025/article/details/141432220

相关文章

  • oem 软件更新 p9348486_112000_Generic,zip
    [oracle@prdb19oemtmp]$emclilogin-username=sysmanEnterpassword:Loginsuccessful[oracle@prdb19oemtmp]$emcliimport_update_catalog-file=p9348486_112000_Generic.zip-omslocalUnabletoreadthefilep9348486_112000_Generic.zip.Verifythefilep......
  • 力扣:有效的数独
    文章目录需求分析结尾需求请你判断一个9x9的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。(请参考示例图)......
  • 1479 leetcode, 将值转换成列的问题
    最终结果#WriteyourMySQLquerystatementbelowselectdistinctb.item_categoryasCategory,ifnull(sum(casewhendayofweek(a.order_date)=2thena.quantityend),0)Monday,ifnull(sum(casewhendayofweek(a.order_date)=3thena.quantityend),0)Tuesday,......
  • 「字符串」前缀函数|KMP匹配:规范化next数组 / LeetCode 28(C++)
    概述为什么大家总觉得KMP难?难的根本就不是这个算法本身。在互联网上你可以见到八十种KMP算法的next数组定义和模式串回滚策略,把一切都懂得特别混乱。很多时候初学者的难点根本不在于这个算法本身,而是它令人痛苦的百花齐放的定义。有的next数组从0下标开始,有的从1开始;有的表......
  • leetcode 2292 连续两年订购商品超过多少次的问题.
       方法1:SELECTdistincto.product_idFROM(SELECTproduct_id,year(purchase_date)year,dense_rank()over(partitionbyproduct_idorderbyyear(purchase_date))rkFROMOrdersGROUPBYproduct_id,year(purchase_date)HAVINGcount(*)>=3)oGROUP......
  • 力扣热题100_栈_739_每日温度
    文章目录题目链接解题思路解题代码题目链接739.每日温度给定一个整数数组temperatures,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。示例1:输入:tempe......
  • 力扣面试经典算法150题:跳跃游戏
    跳跃游戏今天的题目是力扣面试经典150题中的数组的中等难度题:跳跃游戏。题目链接:https://leetcode.cn/problems/jump-game/description/?envType=study-plan-v2&envId=top-interview-150题目描述给定一个非负整数数组nums,你最初位于数组的第一个下标,即nums[0]。数......
  • leetcode面试经典150题- 3. 无重复字符的最长子串
    https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/?envType=study-plan-v2&envId=top-interview-150  packageleetcode150import"testing"funcTestLengthOfLongestSubstring(t*testing.T){s:=&qu......
  • HT4832耳机放大器33mw免输出电容立体声耳机放大器
    ■特点无需大尺寸输出隔直电容以0V电位为参考输出;出色的低频表现:静态电流:3.6mA(PVDD=3.6V,Output=floating)关断电流:0.1uA单端或差分输入 内置输入电阻减少外部元器件数量系统噪声性能优良THD+N仅为:0.014%(3.6V,32ohm,20mw)功率输出:33mW(PVDD=3.6V,RL=32......
  • 最大连续1的个数 III(LeetCode)
    题目        给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。解题deflongestOnes(nums,k):left=0max_len=0zero_count=0forrightinrange(len(nums)):#如......