目录
一、字符串相乘
1、题目描述
2、题解
3、源码
二、旋转图像
1、题目描述
2、题解
3、源码
三、最大子数和
1、题目描述
2、题解
3、源码
四、螺旋矩阵
1、题目描述
2、题解
3、源码
五、合并区间
1、题目描述
2、题解
3、源码
一、字符串相乘
1、题目描述
2、题解
3、源码
class Solution:
def multiply(self, num1: str, num2: str) -> str:
return str(int(num1) * int(num2))
二、旋转图像
1、题目描述
2、题解
3、源码
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
n = len(matrix)
# Python 这里不能 matrix_new = matrix 或 matrix_new = matrix[:] 因为是引用拷贝
matrix_new = [[0] * n for _ in range(n)]
for i in range(n):
for j in range(n):
matrix_new[j][n - i - 1] = matrix[i][j]
# 不能写成 matrix = matrix_new
matrix[:] = matrix_new
三、最大子数和
1、题目描述
2、题解
3、源码
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
size = len(nums)
if size == 0:
return 0
dp = [0 for _ in range(size)]
dp[0] = nums[0]
for i in range(1, size):
if dp[i - 1] >= 0:
dp[i] = dp[i - 1] + nums[i]
else:
dp[i] = nums[i]
return max(dp)
四、螺旋矩阵
1、题目描述
2、题解
3、源码
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
line = len(matrix)
row = len(matrix[0])
total = line * row
ret = []
x = 0
y = 0
while True:
ret.extend(matrix[x][x:row])
x += 1
if len(ret) == total:
break
for i in range(x, line):
ret.append(matrix[i][row - 1])
row -= 1
if len(ret) == total:
break
ret.extend(matrix[line - 1][y:row][::-1])
line -= 1
if len(ret) == total:
break
tmp = []
for i in range(x, line):
tmp.append(matrix[i][y])
ret.extend(tmp[::-1])
y += 1
return ret
五、合并区间
1、题目描述
2、题解
3、源码
class Solution:
def merge(self, intervals):
ret = []
intervals.sort()
start,end = intervals[0]
for i in intervals:
if i[0] > end:
ret.append([start,end])
start = i[0]
end = max(end, i[1])
ret.append([start,end])
return ret
|