DW&LeetCode_day7(54、59、61)

DW&LeetCode_day7(54、59、61)


写在前面:

  • 第7天开始了,今天开始加油吧!

开源内容

开源内容


目录

DW&LeetCode_day7(54、59、61)

写在前面:

开源内容

学习大纲 

54. 螺旋矩阵

题解:

59. 螺旋矩阵 II

题解:

61. 旋转链表

题解:



学习大纲 


54. 螺旋矩阵

给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

示例 1:

输入:
[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]
示例 2:

输入:
[
  [1, 2, 3, 4],
  [5, 6, 7, 8],
  [9,10,11,12]
]
输出: [1,2,3,4,8,12,11,10,9,5,6,7]

来源:力扣(LeetCode)
链接:题目链接

题解:

class Solution:
    def spiralOrder(self, a: List[List[int]]) -> List[int]:
        l = []
        while a:
            l.extend(a.pop(0))
            a = [*zip(*a)][::-1]
        return l

DW&LeetCode_day7(54、59、61)_第1张图片

59. 螺旋矩阵 II

给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例:

输入: 3
输出:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

来源:力扣(LeetCode)
链接:题目链接

题解:

class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        result,x,y,dx,dy =[[0 for col in range(n)] for row in range(n)],0,0,0,1
        for t in range(1,n*n+1):
            result[x][y]= t
            if result[(x+dx)%n][(y+dy)%n]!=0 :
                dx, dy = dy, -dx
            x +=dx
            y +=dy
        return result

DW&LeetCode_day7(54、59、61)_第2张图片

61. 旋转链表

给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。

示例 1:

输入: 1->2->3->4->5->NULL, k = 2
输出: 4->5->1->2->3->NULL
解释:
向右旋转 1 步: 5->1->2->3->4->NULL
向右旋转 2 步: 4->5->1->2->3->NULL


示例 2:

输入: 0->1->2->NULL, k = 4
输出: 2->0->1->NULL
解释:
向右旋转 1 步: 2->0->1->NULL
向右旋转 2 步: 1->2->0->NULL
向右旋转 3 步: 0->1->2->NULL
向右旋转 4 步: 2->0->1->NULL

来源:力扣(LeetCode)
链接:题目链接

题解:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def rotateRight(self, h: ListNode, k: int) -> ListNode:
        if h is None or h.next is None: return h
        l, t = 1, h
        while t.next:l, t = l + 1, t.next
        k %= l
        while k > 0:
            temp = h 
            while h.next.next: h = h.next
            vol, vol.next, h.next = h.next, temp, None
            h, k = vol, k - 1
        return h

DW&LeetCode_day7(54、59、61)_第3张图片

你可能感兴趣的:(LeetCode题解,Python,leetcode)