【LeetCode-面试算法经典-Java实现】【119-Pascal's Triangle II(帕斯卡三角形(杨辉三角)II)】

【119-Pascal’s Triangle II(帕斯卡三角形(杨辉三角)II)】


【LeetCode-面试算法经典-Java实现】【所有题目目录索引】

原题

  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?

题目大意

  给定一个正整数k,求帕斯卡的第k行。

解题思路

  对任意的n>0有

  f(1, n)=1,(n>0)

  f(n, n)=1,(n>2)

  f(i,j) = f(i-1, j-1)+f(i, j-1),i>2,j>2,

  求第k行。

代码实现

算法实现类

import java.util.*;

public class Solution {
    public List<Integer> getRow(int rowIndex) {

        rowIndex++; // 第rowIndex的实质数据数目

        if (rowIndex < 0) {
            return null;
        }

        List<Integer> result = new ArrayList<>(rowIndex);

        if (rowIndex >= 1) {
            result.add(1);
        }

        if (rowIndex >= 2) {
            result.add(1);
        }

        int line = 0; // 记录当前使用哪一行
        int prev; // 上一行是哪一行
        if (rowIndex >= 3) {

            int[][] data = new int[2][rowIndex];
            // 【1】
            data[0][0] = 1;
            data[1][0] = 1;
            data[1][1] = 1;

            for (int i = 2; i < rowIndex; i++) {
                line = i % 2; // 新计算的数据保存在第0或者第1行
                prev = (i - 1 + 2) % 2;
//                data[line][0] = 1; // 设置第一个数字,可以不用,【1】处已经进行了,data[x][0]总为1
                for (int j = 1; j < i; j++) {
                    data[line][j] = data[prev][j - 1] + data[prev][j];
                }

                data[line][i] = 1; // 设置最后一个数
            }

            //
            result.clear();
            for (int i = 0; i < rowIndex; i++) {
                result.add(data[line][i]);
            }

        }

        return result;
    }
}

评测结果

  点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。

特别说明

欢迎转载,转载请注明出处【http://blog.csdn.net/derrantcm/article/details/47589235

版权声明:本文为博主原创文章,未经博主允许不得转载。

【LeetCode-面试算法经典-Java实现】【119-Pascal's Triangle II(帕斯卡三角形(杨辉三角)II)】

时间: 2024-10-19 23:00:23

【LeetCode-面试算法经典-Java实现】【119-Pascal's Triangle II(帕斯卡三角形(杨辉三角)II)】的相关文章

[LeetCode] 119. Pascal&#39;s Triangle II 杨辉三角 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? 118. Pascal's Triangle 的拓展,给一个索引k,返回杨辉三角的第k行. 解法:题目要求优化到 O(k) 的空间复杂,那么就不能把每

LeetCode 119 Pascal&#39;s Triangle II(帕斯卡三角形II)(vector、数学公式)(*)

翻译 给定一个索引K,返回帕斯卡三角形的第K行. 例如,给定K=3, 返回[1,3,3,1]. 注释: 你可以改进你的算法只用O(k)的额外空间吗? 原文 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 sp

[LeetCode] 118. Pascal&#39;s Triangle 杨辉三角

Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Return [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 杨辉三角形,又称贾宪三角形.帕斯卡三角形.海亚姆三角形.巴斯卡三角形,是二项式系数在的一种写法,形似三角形,在中国首现于南宋杨辉的<详解九章算术>得名,书中杨辉说明是引自贾宪的<释锁算术>

js算法集合(二) javascript实现斐波那契数列 (兔子数列) Javascript实现杨辉三角

js算法集合(二)  斐波那契数列.杨辉三角 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列和杨辉三角进行研究,来加深对Javascript的理解. 一.Javascript实现斐波那契数列 ①要用Javascript实现斐波那契数列,我们首先要了解什么是斐波那契数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为

Java之杨辉三角的实现

今天突然想温习一下Java的基础,想了想就写写杨辉三角吧 1 public class First 2 { 3 public static void main(String[] args) 4 { 5 int[][] Arr = new int[5][]; 6 for(int i = 0; i < Arr.length; i++) 7 { 8 Arr[i] = new int[i + 1]; 9 Arr[i][0] = 1; 10 Arr[i][i] = 1; 11 for(int j = 0;

杨辉三角js算法

上个星期,小熙有幸去艺龙网面试web前端开发职位,技术经理在面试中,给小熙出了一道数学题.学名杨辉三角.用函数计算出第n行,第m个数值是多少.直接看效果吧 让我用函数算出,第n行,第m个数字是什么.作为理科生的小熙,虽然脑子也灵光,可是.这么久不做数学题,况且还是用函数做出来,当时脑瓜一翁,完蛋了啦,game over了.不会... 回来后,我找到难点,其实,最大的难点在于,我不会递归.这一直是我的一个痛点.呵呵了...于是,先了解,递归,,我总感觉,自己经常淹没的递归里,无法脱身...用早就忘

Java [Leetcode 119]Pascal&#39;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]. 解题思路: 每次在上一个list前面插入1,然后后面的每两个间相加赋值给前一个数. 代码描述: public class Solution { public List<Integer> getRow(int rowIndex) { List<Integer> r

leetcode 119 Pascal&#39;s Triangle II ----- java

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? 上一道题的延伸版,就是直接求出第k行的数,要求用o(k)的空间复杂度. 也是直接相加就可以了. public class Solution { pub

LeetCode 119. Pascal&#39;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? 题目标签:Array 这道题目与之前那题不同的地方在于,之前是给我们一个行数n,让我们把这几行的全部写出来,这样就可以在每写新的一行的时候根据之前的那

【LeetCode-面试算法经典-Java实现】【139-Word Break(单词拆分)】

[139-Word Break(单词拆分)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words. For example, given s = "leetcode", di