p41 杨辉三角(帕斯卡三角形) (leetcode 118)

一:解题思路

这个题目关键要找出规律,并用数学表达式表示其中的规律。

i:0->n-1 a(i,0)=1;a(i,i)=1;a(i,j)=a(i-1,j-1)+a(i-1,j)。Time:O(n),Space:O(1)

二:完整代码示例 (C++版和Java版)

C++:

class Solution {
public:
    vector<vector<int>> generate(int numRows) 
    {
        vector<vector<int>> result;
        if (numRows < 1) return result;

        for (int i = 0; i < numRows; i++)
        {
            vector<int> elem(i+1,0);
            elem[0] = 1;
            elem[i] = 1;

            for (int j = 1; j < i; j++)
            {
                elem[j] = result[i-1][j-1] + result[i-1][j];
            }

            result.push_back(elem);
        }

        return result;
    }
};

Java:

class Solution {
    public List<List<Integer>> generate(int numRows)
    {
           List<List<Integer>> result=new ArrayList<>();
           if(numRows<1) return result;

           for(int i=0;i<numRows;i++)
           {
               List<Integer> list=Arrays.asList(new Integer[i+1]);
               list.set(0,1);
               list.set(i,1);
               
               for(int j=1;j<i;j++)
               {
                   list.set(j,result.get(i-1).get(j-1)+result.get(i-1).get(j));
               }
               
               result.add(list);
           }

           return result;
    }
}

猜你喜欢

转载自www.cnblogs.com/repinkply/p/12503283.html
今日推荐