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%
    的用户
    '''
    
  • 相关阅读:
    系统手动激活
    scroll-into-view 简单demo
    css3 box-shadow 单边阴影
    js前端常用的方法
    css 箭头
    当前页面返回前一个页面时,执行前一个页面的方法
    小程序自定义组件
    vuejs2-生命周期
    Vuejs2-mock数据
    vuejs2+axios设置
  • 原文地址:https://www.cnblogs.com/paulkg12/p/12561732.html
Copyright © 2011-2022 走看看