1. 59——螺旋矩阵2
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
标签:数组,矩阵,模拟
代码:
class Solution:def generateMatrix(self, n: int) -> List[List[int]]:matrix = []for i in range(n):matrix.append([0] * n)top = 0bottom = n - 1left = 0right = n - 1num = 1while num <= n*n:for i in range(left, right + 1):matrix[top][i] = numnum = num + 1top = top + 1for i in range(top, bottom + 1):matrix[i][right] = numnum = num + 1right = right - 1for i in range(right, left - 1, -1):matrix[bottom][i] = numnum = num + 1bottom = bottom - 1for i in range(bottom, top - 1, -1):matrix[i][left] = numnum = num + 1left = left + 1return matrix
2. 60——排列序列
给出集合 [1,2,3,...,n]
,其所有元素共有 n!
种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3
时, 所有排列如下:
"123"
"132"
"213"
"231"
"312"
"321"
给定 n
和 k
,返回第 k
个排列。
标签:递归,数学
代码:
class Solution:def getPermutation(self, n: int, k: int) -> str:def fun(nums):n = len(nums) - 1while n > 0:if nums[n - 1] > nums[n]:n = n - 1else:breakidx1 = n - 1num1 = nums[idx1]n = len(nums) - 1while n > idx1:if nums[n] < num1:n = n - 1else:breakidx2 = nnum2 = nums[idx2]nums[idx1], nums[idx2] = num2, num1left = idx1 + 1right = len(nums) - 1while left < right:nums[left], nums[right] = nums[right], nums[left]left = left + 1right = right - 1return numsnums = []res = ""for i in range(n):nums.append(i + 1)i = 1while i < k:nums = fun(nums)i = i + 1for i in nums:res = res + str(i)return res
3. 61——旋转链表
给你一个链表的头节点 head
,旋转链表,将链表每个节点向右移动 k
个位置。
标签:链表,双指针
代码:
# 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, head: Optional[ListNode], k: int) -> Optional[ListNode]:pointer = headleng = 0while pointer:leng = leng + 1pointer = pointer.nextif leng == 0 or leng == 1:return headif k == 0 or k % leng == 0:return headk = k % leng # 向右移动k次,对应倒数第k个结点会是新的头结点pointer = headwhile k:pointer = pointer.nextk = k - 1pointer1 = headwhile pointer.next:pointer1 = pointer1.nextpointer = pointer.nextres = pointer1.nextpointer1.next = Nonepointer.next = headreturn res