「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」
[杨辉三角 II]
给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: rowIndex = 3 输出: [1,3,3,1] 示例 2:
输入: rowIndex = 0 输出: [1] 示例 3:
输入: rowIndex = 1 输出: [1,1]
提示:
0 <= rowIndex <= 33
进阶:
你可以优化你的算法到 O(rowIndex) 空间复杂度吗?
解题思路: 1.老规矩,先判断特殊情况 当rowIndex ==0 返回 [1] 2.使用for row in range(1,rowindex) 进行遍历,一直遍历到最新的行,就是我们想要的数据了
class Solution:
def getRow(self, rowIndex: int) -> List[int]:
if rowIndex == 0 :
return [1]
res = [1]
for row in range(1, rowIndex+1):
tmp = [1]
for i in range(1, row):
tmp.append(res[i] + res[i-1])
tmp.append(1)
res = tmp
return res
执行结果:
[旋转图像]
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[[7,4,1],[8,5,2],[9,6,3]] 示例 2:
输入: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].length 1 <= n <= 20 -1000 <= matrix[i][j] <= 1000
解题思路: 1.同样先判断一下特殊情况,只有一个数据,直接返回即可 2.根据每一层进行遍历赋值,设置设置tmp作为一个存储值,将旋转值进行逐个替换。
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
if len(matrix) == 0 :
return matrix
nums = len(matrix)
for i in range(nums // 2):
for j in range(i, nums - i - 1):
tmp = matrix[nums - 1 - j][i]
matrix[nums - 1 - j][i] = matrix[nums - 1 - i][nums - 1 - j]
matrix[nums - 1 - i][nums - 1 - j] = matrix[j][nums - 1 - i]
matrix[j][nums - 1 - i] = matrix[i][j]
matrix[i][j] = tmp
执行结果: