zoukankan      html  css  js  c++  java
  • leetcode 119 Pascal's Triangle II

    Given an index k, return the kth row of the Pascal's triangle.

    For example, given k = 3,
    Return [1,3,3,1].

    Note:
    Could you optimize your algorithm to use only O(k) extra space?

    • 要求空间复杂度为 O(n )
    • 和上题不同,此题是从0开始,和数组下标一致

    关于杨辉三角的规律

      

    Method1 :通过一维数组来模拟杨辉三角逐渐变换的情况

    class Solution
    {
    public:
        vector<int> getRow(int numRows)
        {
            vector<int>result(numRows+1,0);
            result[0] = 1;
            for (int i=1; i <= numRows; i++)
            {
                for (int j=i; j >= 1 ; j--)
                {
                    result[j] += result[j-1];
                }
            }
            return result;
        }
    };

     数学公式

    class Solution {
    public:
        vector<int> getRow(int numRows) {
            vector<int>result(numRows+1,0);
            result[0] = result[numRows] = 1;
            for (int i=1; i < (numRows+2)/2 ; i++)
            {
               result[i] = result[numRows-i] = result[i-1] * (numRows - i + 1) /i;
            }
            return result;
        }
    };
    

     公式是  result[i]  =  result[i-1] * (numrows - i + 1 ) / i

    证明过程如下;

        根据杨辉三角的规律,注意 杨辉三角中第 n 行 第 k 个数字 对对应于数组中的 第 n -1 行 第 k -1 个数字 ,题目中要求输入的是数组角标

  • 相关阅读:
    zoj 2876 Phone List
    zoj 2829 Beautiful Number
    zoj 2723 Semi-Prime(set)
    zoj 2835 Magic Square(set)
    zoj 2818 Root of the Problem
    zoj 2744 Palindromes
    zoj 1109 Language of FatMouse(map)
    zoj 2724 Windows Message Queue
    zoj 2722 Head-to-Head Match(两两比赛)
    zoj 2727 List the Books
  • 原文地址:https://www.cnblogs.com/sxy-798013203/p/7635841.html
Copyright © 2011-2022 走看看