class Solution:
def matrixReshape(self, mat: List[List[int]], r: int, c: int) -> List[List[int]]:
new_mat = []
for i in range(len(mat)):
for j in range(len(mat[i])):
new_mat.append(mat[i][j])
if r*c != len(new_mat):
return mat
ans = [[0 for i in range(c)] for j in range(r)]
start = 0
end = start+c
for i in range(r):
ans[i] = new_mat[start:end]
start = start + c
end = start + c
return ans
思路:将原来的矩阵拉平到1维,然后根据所给的维度重新构造矩阵,若元素数量不对,则返回原始矩阵。
注意:
列表推导式生成两维列表,每个列表的长度为c,共有r个。
ans = [[0 for i in range(c)] for j in range(r)]
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
ans = [[]for i in range(numRows)]
ans[0].append(1)
if numRows>1:
ans[1].append(1)
ans[1].append(1)
for i in range(2,numRows):
ans[i].append(1)
for j in range(len(ans[i-1])-1):
ans[i].append(ans[i-1][j]+ans[i-1][j+1])
ans[i].append(1)
return ans
关注好头尾元素1,已经中间元素的计算方式即可。C(n+1,i)=C(n,i)+C(n,i-1)