杨辉三角II(转)

在这里插入图片描述
##公式法
如果熟悉杨辉三角,应该记得杨辉三角其实可以看做由组合数构成。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传https://imgconvert.csdnimg.cn/aHR0cHM6Ly9waWMubGVldGNvZGUtY24uY29tLzE5NWRlMDFlYWU5MWUwOWRlMTRkZDEzZGFhZmJlZjk4NmM0MjM0NWYyYmRlZjQwNTE1M2ExNzQyMTc1MDc5ZjQuanBn?x-oss-process=image/format,png])
根据组合数的公式,将(n-k)!约掉,化简就是下边的结果。
在这里插入图片描述
然后我们就可以利用组合数解决这道题。

public List<Integer> getRow(int rowIndex) {
    List<Integer> ans = new ArrayList<>();
    int N = rowIndex;
    for (int k = 0; k <= N; k++) {
        ans.add(Combination(N, k));
    }
    return ans;
}

private int Combination(int N, int k) {
    long res = 1;
    for (int i = 1; i <= k; i++)
        res = res * (N - k + i) / i;
    return (int) res;
}

上边的算法对于每个组合数我们都重新求了一遍,但事实上前后的组合数其实是有联系的。

在这里插入图片描述

总结

这道题其实还是比较简单的,只是优化的两种方法是比较常用的,一种就是用pre变量将要被覆盖的变量存起来,另一种就是倒着进行。另外求组合数的时候,要防止int的溢出。

作者:windliang
链接:https://leetcode-cn.com/problems/pascals-triangle-ii/solution/xiang-xi-tong-su-de-si-lu-fen-xi-duo-jie-fa-by–28/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值