zoukankan      html  css  js  c++  java
  • 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].

    链接: http://leetcode.com/problems/pascals-triangle-ii/

    一刷,题目简单,但是需要看清题目,这次是从0行开始的,一开始每行最末尾填0的话可以把从 len(result) - 1到1的下标都一起包括,否则如果填1还要把最后一个去掉

    class Solution(object):
        def getRow(self, rowIndex):
            if rowIndex < 0:
                return []
            result = [1]
            for row in range(rowIndex):
                result.append(0)
                for idx in range(len(result) - 1, 0, -1):
                    result[idx] = result[idx] + result[idx - 1]
            return result
    看到别人的解法,看懂了,但是关于两个range的下限为什么这么取没有想通。是一开始就想到的,还是refactor或是测试时候试出来的。
    试着按照作者思路想,每一轮n要改动的范围是[1, n - 2],所以rowIndex = 0, 1没有合适的改动下标,所以row的下限是2, 而且输入n, 输出其实是第n+1行,所以上限是rowIndex + 1
    内循环范围还没有想好。 
    1 class Solution(object):
    2     def getRow(self, rowIndex):
    3         result=[1]*(rowIndex+1)
    4         for row in range(2, rowIndex+1):
    5             for idx in range(1, row):
    6                 result[row - idx] += result[row - idx - 1]
    7         return result

    2/18/2017, Java

    多次调试,错误:

    1. k=3其实是第4行,看例子得出来的,要注意例子

    2. 内循环里,因为如果从前往后赋值会覆盖之前的值,所以内循环从后往前计算。

     1 public class Solution {
     2     public List<Integer> getRow(int rowIndex) {
     3         if (rowIndex < 0) return new ArrayList<Integer>();
     4 
     5         List<Integer> ret = new ArrayList<Integer>();
     6         for (int i = 0; i <= rowIndex; i++) {
     7             ret.add(1);
     8         }
     9         for (int level = 1; level <= rowIndex; level++) {
    10             for (int i = level - 1; i >= 1; i--) {
    11                 ret.set(i, ret.get(i-1) + ret.get(i));
    12             }
    13         }
    14         return ret;
    15     }
    16 }
  • 相关阅读:
    [Leetcode] Median of Two Sorted Arrays
    [Jobdu] 题目1463:招聘会
    [Leetcode] Merge Two Sorted Lists
    [Leetcode] Combinations
    [Leetcode] Populating Next Right Pointers in Each Node II
    [Leetcode] Insertion Sort List
    redis在Web中的使用
    设计模式:单例模式
    设计模式:基本法则
    设计模式:工厂模式
  • 原文地址:https://www.cnblogs.com/panini/p/5613107.html
Copyright © 2011-2022 走看看