zoukankan      html  css  js  c++  java
  • lc0324

    ✅ 119. 杨辉三角 II

    https://leetcode-cn.com/problems/pascals-triangle-ii/

    描述

    给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。

    image.png

    解答

    他人:

    c/Java

    /**
     * 获取杨辉三角的指定行
     * 直接使用组合公式C(n,i) = n!/(i!*(n-i)!)
     * 则第(i+1)项是第i项的倍数=(n-i)/(i+1);
     */
    public List<Integer> getRow(int rowIndex) {
            List<Integer> res = new ArrayList<>(rowIndex + 1);
            long cur = 1;
            for (int i = 0; i <= rowIndex; i++) {
                res.add((int) cur);
                cur = cur * (rowIndex-i)/(i+1);
            }
            return res; 
    }
    
    ---
    
    int* getRow(int rowIndex, int* returnSize) {
        *returnSize = rowIndex + 1;
        int* num = (int*) malloc ((rowIndex + 1) * sizeof(int));
        for(int i = 0;i <= rowIndex;i++)
            for(int j = i;j >= 0;j--)
            {
                if(j == 0 || j == i)
                    num[j] = 1;
                else
                    num[j] = num[j] + num[j-1];
            }
        return num;
    }
    
    ---
    
    java beats 98%
    
      public List<Integer> getRow(int rowIndex) {
            Integer[] dp = new Integer[rowIndex + 1];
            Arrays.fill(dp,1);
            for(int i = 2;i < dp.length;i++){
                for(int j = i - 1;j > 0;j--)
                    dp[j] = dp[j] + dp[j - 1];
            }
            List<Integer> res = Arrays.asList(dp);
            return res;
        }` 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
    
    
    

    py

    class Solution:
        def getRow(self, rowIndex: int) -> List[int]:
            res = []
            for i in range(1, rowIndex):
                tmp =  [1] * i
                for j in range(1, i-1):
                    tmp[j] = res[i-1][j-1] + res[i-1][j]
                res.append(tmp)
            return res[rowIndex-1]
    '''
    最后一行:红了:
    IndexError: list index out of range
    Line 9 in getRow (Solution.py)
    Line 34 in _driver (Solution.py)
    Line 45 in <module> (Solution.py)
    '''
    
    ######fix:
    
    class Solution:
        def getRow(self, rowIndex: int) -> List[int]:
            res = []
            for i in range(1, rowIndex+2):
                tmp =  [1] * i
                for j in range(1, i-1):
                    tmp[j] = res[i-2][j-1] + res[i-2][j]
                res.append(tmp)
            print(res)
            return res[rowIndex]
    '''
    执行用时 :
    44 ms
    , 在所有 Python3 提交中击败了
    28.65%
    的用户
    内存消耗 :
    13.6 MB
    , 在所有 Python3 提交中击败了
    5.16%
    的用户
    '''
    
  • 相关阅读:
    统计0到n之间1的个数
    CUMCM--总结
    赫尔曼算法及应用
    css3实现连续不断的波浪
    svg优雅降级技术
    正则的一点经验
    vue 配合 element-ui使用搭建环境时候遇到的坑
    gulpfile.js备份
    最新版浏览器报错net::ERR_INSECURE_RESPONSE原因
    移动web端使用rem实现自适应原理
  • 原文地址:https://www.cnblogs.com/paulkg12/p/12561732.html
Copyright © 2011-2022 走看看