杨辉三角II 不需要输出全部数字,只需要输出最后一行。
最后一行由前一行计算得,同一行也有计算方法:
[1,3,3,1]
下一行:
在前一行数组下标为0的位置插入0,而后new[i]=old[i]+old[i+1]
[(0)+1,1+3,3+3,3+1,1]
[1,4,6,4,1]
func getRow(rowIndex int) []int {
res:=make([]int,rowIndex+1)
for t:=range res{
res[t]=0
}
res[0]=1
for i:=1;i<rowIndex+1;i++{
for j:=i;j>=1;j--{
res[j]=res[j-1]+res[j]
}
}
return res
}
注意输入0或1:
特殊情况也可以单独考虑,不单独考虑就要注意逻辑。res[0]=1要放在for循环之外。
数组初始化遇到问题:non-constant array bound:
You can't instantiate an array like that with a value calculated at runtime. Instead use make to initialize a slice with the desired length. It would look like this;
left := make([]int, leftLength)
有第二种解法:数学组合公式。
有疑问加站长微信联系(非本文作者)