leecode.48交换矩阵

该博客介绍了LeetCode第48题的解决方案,即如何原地旋转一个n×n的二维矩阵90度。博主首先通过转置矩阵,然后交换转置后矩阵的列来实现旋转。特别地,博主分享了如何利用异或运算在不使用额外变量的情况下交换两个数的技巧。
摘要由CSDN通过智能技术生成

题目

给定一个 n × n 的二维矩阵表示一个图像。

将图像顺时针旋转 90 度。

说明:

你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

思路分析

  • 首先先转置矩阵。
  • 将转置后的矩阵的列发生交换。

注意点

如何不使用中间变量实现两个数的交换。使用异或运算。实现两个int的交换。
a=a^b, b=b^a, a = a^b;
例子,例如当a=4,b=7的时候。二进制a:0100,b:0111.
在这个过程中
a=(0100)^(0111)=(0011)
b=(0011)^(0111)=(0100)
a=(0011)^(0100)=(0111)

代码

class Solution {
   
public:
    void rotate(vector<vector<int>>& matrix) {
   
    // 首先就是将matrix变成其转置,然后将转置中的矩阵列发生变化。(i,j)-(j,i)-(j,n - 1 - i)
    int n = matrix
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值