1. 48——旋转图像
给定一个 n × n 的二维矩阵 matrix
表示一个图像。请你将图像顺时针旋转 90 度。
你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。
标签:数组,数学,矩阵
代码:
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
n = len(matrix)
for i in range(n // 2):
for j in range((n + 1) // 2):
temp = matrix[i][j]
matrix[i][j] = matrix[n - j - 1][i]
matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1]
matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1]
matrix[j][n - i - 1] = temp
2. 49——字母异位词分组
给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表。
字母异位词是由重新排列源单词的所有字母得到的一个新单词。
标签:数组,哈希表,字符串,排序
代码:
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
haxi = {}
res = []
for st in strs:
lis = list(st)
lis.sort()
st1 = ''.join(lis)
if st1 not in haxi:
haxi[st1] = [st]
else:
haxi[st1].append(st)
for key in haxi:
res.append(haxi[key])
return res
实现 pow(x, n),即计算 x
的整数 n
次幂函数(即 x^n
)。
标签:递归,数学(目前不会)
代码:
4. 51——N皇后
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n 皇后问题研究的是如何将 n
个皇后放置在 n×n
的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n
,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个不同的 n 皇后问题的棋子放置方案,该方案中 'Q'
和 '.'
分别代表了皇后和空位。
标签:数组,回溯(目前不会)
代码:
5. 52——N皇后2
n 皇后问题研究的是如何将 n
个皇后放置在 n × n
的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n
,返回 n 皇后问题不同的解决方案的数量。
标签:回溯(目前不会)
代码:
6. 53——最大子数组和
给你一个整数数组 nums
,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。
标签:数组,动态规划
代码:
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
lis = []
sum = 0
for i in range(len(nums)):
if sum > 0:
sum = sum + nums[i]
else:
sum = nums[i]
lis.append(sum)
return max(lis)