zoukankan      html  css  js  c++  java
  • [LeetCode] Pascal's Triangle II

    Question:

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

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

    1、题型分类:

    2、思路:直接使用公式,第n行  第0个数是1,从第i个数开始一次是 N[i-1]*(n-i)/i  ,(n是从0开始)。需要注意的是这里会出现直接采用前面的公式会出现超过Integer.Max_Value的情况,需要先除再乘  除之前需乘上1.0,防止两个整数相除结果取整的情况。

    3、时间复杂度:

    4、代码:

        public List<Integer> getRow(int rowIndex) {
            if(rowIndex<0) return null;
            rowIndex+=1;
            List<Integer> list=new ArrayList<Integer>();
            for(int i=0;i<rowIndex;i++)
            {
                if(i==0) {list.add(1);continue;}
                if(Integer.MAX_VALUE/list.get(i-1).intValue()<rowIndex-i)
                    list.add((int)(list.get(i-1).intValue()*1.0/i*(rowIndex-i)));
                else 
                    list.add(list.get(i-1).intValue()*(rowIndex-i)/i);
            }
            return list;
        }

    5、优化:

      网上很多朋友的办法,外层循环是从第一层开始利用规则往下计算,直到第N层,内层循环是从第二个数到倒数第二个数,其中利用一个temp代表被取代的数。

    public class Solution {
        public List<Integer> getRow(int rowIndex) {
            if(rowIndex<0) return null;
            rowIndex+=1;
            List<Integer> list=new ArrayList<Integer>();
            list.add(1);
            for(int i=1;i<rowIndex;i++)
            {
                int temp=1;
                for(int j=1;j<i;j++)
                {
                    int tempInner=list.get(j);
                    list.set(j, temp+tempInner);
                    temp=tempInner;
                }
                list.add(1);
            }
            return list;
        }
    }

    6、扩展:

  • 相关阅读:
    正则表达式30分钟入门教程
    21 个HTML网页转RSS Feeds的工具
    批量去除PHP文件中bom的PHP代码
    WEB网页采集技术参考
    xcache
    Sonix SN9P701 OCR点读笔二维码识别源码
    UI设计素材资源网站推荐
    解决电信DNS劫持
    自学电子技术的最佳方法
    wp资源汇总
  • 原文地址:https://www.cnblogs.com/maydow/p/4644861.html
Copyright © 2011-2022 走看看