- 浏览: 183680 次
- 性别:
- 来自: 济南
文章分类
最新评论
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?
简单的方法就是从0开始一层一层的生成,直到生成到第k行,这样空间复杂度为O(n^2), 代码如下:
我们可以进行优化,根据杨辉三角的规律,每一行都是一种组合的形式,例如第k行中的序列为:C(k, 0),C(k, 1),C(k, 2), . . . . .C(k, k - 1),C(k, k)。这样第C(k, i)个元素就是C(k, i - 1) * (k - (i - 1)) / i ,所以我们可以从第一个元素开始,通过这个公式来生成剩余的元素,这样空间复杂度为O(k)。公式的计算期间会有溢出的情况,我们把它转换成Long型。代码如下:
For example, given k = 3,
Return [1,3,3,1].
Note:
Could you optimize your algorithm to use only O(k) extra space?
简单的方法就是从0开始一层一层的生成,直到生成到第k行,这样空间复杂度为O(n^2), 代码如下:
public class Solution { public List<Integer> getRow(int rowIndex) { List<Integer> list = new ArrayList<Integer>(); if(rowIndex < 0) return list; list.add(1); for(int i = 1; i <= rowIndex; i++) { List<Integer> cur = new ArrayList<Integer>(); cur.add(1); for(int j = 0; j < list.size() - 1; j++) { cur.add(list.get(j) + list.get(j + 1)); } cur.add(1); list = cur; } return list; } }
我们可以进行优化,根据杨辉三角的规律,每一行都是一种组合的形式,例如第k行中的序列为:C(k, 0),C(k, 1),C(k, 2), . . . . .C(k, k - 1),C(k, k)。这样第C(k, i)个元素就是C(k, i - 1) * (k - (i - 1)) / i ,所以我们可以从第一个元素开始,通过这个公式来生成剩余的元素,这样空间复杂度为O(k)。公式的计算期间会有溢出的情况,我们把它转换成Long型。代码如下:
public class Solution { public List<Integer> getRow(int rowIndex) { List<Integer> list = new ArrayList<Integer>(); if(rowIndex < 0) return list; list.add(1); for(int i = 1; i < rowIndex + 1; i++) { list.add((int)((long)list.get(i - 1) * (rowIndex - i + 1) / i)); } return list; } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 265Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 267You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 384Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 374Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 499Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 563Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 475Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 664Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 469The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 430Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 575Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 581Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 426All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 898Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 930Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 602Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 676Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 845Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 783You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 706For a undirected graph with tre ...
相关推荐
python python_leetcode题解之119_Pascal's_Triangle_II
javascript js_leetcode题解之119-pascal's-triangle-II.js
python python_leetcode题解之118_Pascal's_Triangle
### 杨辉三角(Pascal's Triangle)及其实现 #### 概述 杨辉三角是一种在数学领域中广泛使用的数列结构,以其独特的构造方式和应用价值而著名。杨辉三角中的每一个数字都是其正上方两个数字的和,顶部为1。这种...
javascript js_leetcode题解之118-pascal's-triangle.js
这段代码展示了如何用Java编程语言有效地解决LeetCode上的Pascal's Triangle问题。它利用了杨辉三角的递归性质,通过迭代而非递归的方式降低了复杂性,使得算法的效率更高。同时,代码结构清晰,易于理解,是学习...
**标题解析:** "Triangulo-Pascal.rar_VBa" 这个标题表明我们讨论的是一个与帕斯卡三角形(Pascal's Triangle)相关的VBA(Visual Basic for Applications)项目。帕斯卡三角形是一种数学概念,而VBA是微软Office...
【Pascal程序语言基础】分支结构程序设计是编程中一种重要的控制流机制,它允许程序根据特定条件执行不同的代码块。在Pascal语言中,主要包含两种类型的分支结构:IF语句和CASE语句。 一、IF语句 1. IF语句的基本...
在Python编程语言中,杨辉三角(Pascal's Triangle)是一种经典的数形结构,它在组合数学、概率论以及计算机科学等领域都有广泛的应用。杨辉三角的每一行都是一个数列,每个数都是由上一行相邻两个数相加得到的。...
writeln('Invalid triangle!'); end; 'J': begin readln(l, w); writeln('Perimeter: ', 2 * (l + w):8:2); writeln('Area: ', l * w:8:2); end; end; readln; end. ``` - 使用`case`语句根据不同输入字符...
pascal_triangle = generate_pascal_triangle(n) # 进一步处理pascal_triangle以解决具体问题 ``` 综上所述,第十四届蓝桥杯Python省赛涵盖了Python语言的基础操作、字符串处理、递归算法以及数据结构的应用等多...
Pascal's Triangle easy O O 119 Pascal's Triangle II easy O 要满足只用一个array大小空间O(k) k为input大小来完成,须具备backtracking概念 151 Reverse Words in a String medium O 这题有点算是easy的程度, ...
标题 "16_LL_Triangle.pdf" 和描述中提到的文件是一个 PHP 编写的网页,用于展示一个基于用户输入的 "N" 值的帕斯卡三角形(Pascal's Triangle)。帕斯卡三角形是一种数学图形,其中每个数字是其上方两个数字的和。...
杨辉三角(Pascal's Triangle)是一种数字排列,三角形的每一行中的每个数字都是上一行中两个数字之和。使用动态规划可以有效地构建杨辉三角。代码通过动态规划的方法生成杨辉三角,每一行的计算依赖于上一行的结果...
leetcode-js Leecode 经典题目 JavaScript TypeScript 题解。 Leetcode's answers by JavaScript and TypeScript. easy 66.加一 (Plus One) 67.二进制求和 (Add Binary) ...119.杨辉三角 II (Pascal's Triangle)
**帕斯卡三角形**(Pascal's Triangle)是一种由数字组成的三角形结构,在组合数学和概率论中具有重要的地位。该三角形的特点是:每一行的两端数字均为1,而其余每个数字都是其正上方两数之和。 #### 二、Python...
119_Pascal's_Triangle_II 169_Majority_Element 229_Majority_Element_II 274_H_索引 275_H_Index_II 217_Contain_Duplicate 55_Jump_Game 45_Jump_Game_II 121_Best_Time_to_Buy_and_Sell_Stock 122_Best_Time_to_...
Topics covered: Overview of fractals and chaos theory, feedback and multiple reduction copy machines (MRCMs), the Cantor Set, the Sierpinski Gasket and Carpet, the Pascal Triangle, the Koch Curve, ...
Topics covered: Overview of fractals and chaos theory, feedback and multiple reduction copy machines (MRCMs), the Cantor Set, the Sierpinski Gasket and Carpet, the Pascal Triangle, the Koch Curve, ...
Topics covered: Overview of fractals and chaos theory, feedback and multiple reduction copy machines (MRCMs), the Cantor Set, the Sierpinski Gasket and Carpet, the Pascal Triangle, the Koch Curve, ...