做网站要学什么,西安做企业网站排名,阿旗建设局举报网站,东营市建设网站【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主#xff0c;题解使用C语言。#xff08;若有使用其他语言的同学也可了解题解思路#xff0c;本质上语法内容一致题解使用C语言。若有使用其他语言的同学也可了解题解思路本质上语法内容一致 【题目描述】
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
【示例一】 输入matrix [[1,2,3],[4,5,6],[7,8,9]]
输出[[7,4,1],[8,5,2],[9,6,3]]
【示例二】 输入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].length1 n 20-1000 matrix[i][j] 1000
【代码】
// 使用辅助数组class Solution {
public:void rotate(vectorvectorint matrix) {int n matrix.size();auto matrix_new matrix;for (int i 0; i n; i) {for (int j 0; j n; j) {matrix_new[j][n - i - 1] matrix[i][j];}}matrix matrix_new;}
};// 方法二水平翻转 对角线翻转class Solution {
public:void rotate(vectorvectorint matrix) {int n matrix.size();// 水平翻转for (int i 0; i n / 2; i) {for (int j 0; j n; j) {swap(matrix[i][j], matrix[n - i - 1][j]);}}// 主对角线翻转for (int i 0; i n; i) {for (int j 0; j i; j) {swap(matrix[i][j], matrix[j][i]);}}}
};