48. 旋转图像—leetcode
class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        难点:会覆盖还未移动的值
        """
        # n = len(matrix)
        # if n == 1:
        #     return matrix
        # temp = []
        # for row in range(n):# 数组的每一行
        #     for i in range(n):
        #         if i != row and i != n-row-1: 
        #             if i + 1 == n:
        #                 temp.append(matrix[i][n-row-1])
        #                 matrix[i][n-row-1] = temp.pop(0)
        #             temp.append(matrix[i][n-row-1])
        #             matrix[i][n-row-1] = matrix[row][i]
-----------------------------------------------------------------------------------------
#上面注释内容的思路有误,一行一行的处理会将暂存栈顺序弄乱,导致无法恢复。于是采用下面一个位置一个未知的移动,外层一圈一圈的进行。
        left = 0 # 列序号最左侧 
        right = len(matrix)-1
        while left < right:
            for i in range(right-left):# 当前最外层每层旋转次数
                top = left # 行序号最上面
                bottom = right 
                topleft = matrix[top][left+i] # 先将左上角的元素存起来 
                matrix[top][left+i] = matrix[bottom-i][left] # 左下角的元素移动到左上角
                matrix[bottom-i][left] = matrix[bottom][right-i]# 右下角的元素移动到左下角
                matrix[bottom][right-i] = matrix[top+i][right]# 右上角的元素移动到右下角
                matrix[top+i][right] = topleft # 原先存起来的左上角的元素移动到右上角
            # 更新最外层
            left += 1
            right -= 1

不能急于求成,有时候慢也是快,一行一行进行旋转容易错。最关键的还是定四个角,逐步缩小最外层的思路。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇