力扣 初级算法 全套力扣精解

初级算法-数组-旋转图像

2021-08-05  本文已影响0人  coenen
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。
提示:
matrix.length == n
matrix[i].length == n
1 <= n <= 20
-1000 <= matrix[i][j] <= 1000

力扣 旋转图像.jpg
摘一个示例做个说明.
示例 1:
输入: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]]
条件分析:
  1. 原地修改 -> 在原数组上操作,不能开辟新空间
解决思路1:
  1. 根据分析1,说明是可变数组
  2. 顺时针旋转90度,说明底部的转到左边,左边的转到上边,上边的转到右边.依次转动.
先根据图示,我们可以先采用上下交换,然后再左上,右下对角线交换即可

代码实现-Swift版本:

思路1代码:

func rotate(_ matrix: inout [[Int]]) {
    // 先上下换,再对角线交换
    for i in 0 ..< matrix.count/2 {
        let tmp = matrix[i]
        matrix[i] = matrix[matrix.count - 1 - i]
        matrix[matrix.count - 1 - i] = tmp
    }
    
    for i in 0 ..< matrix.count {
        for  j in i + 1 ..< matrix[i].count {
            let tmp = matrix[i][j]
            matrix[i][j] = matrix[j][i]
            matrix[j][i] = tmp
        }
    }
}
旋转图像提交结果.jpg

测试用例:

var array = [[1,2,3],[4,5,6],[7,8,9]]

到此力扣初级算法数组相关算法已经展示完了,下面会继续写一下数组相关的算法.然后再开启新的篇章.按类梳理,以点带面,以面带全,争取早日修成神功.

考察要点:

上一篇下一篇

猜你喜欢

热点阅读