博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 119 Pascal's Triangle II
阅读量:7101 次
发布时间:2019-06-28

本文共 1314 字,大约阅读时间需要 4 分钟。

题目描述

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

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

思路

得到第k+1行的一整列的值。

解法1得到前k+1行的值,将最后一行的return就可以。

解法2,只用一个一维数组,前一行的数变成后一行时:

  1. 直接在后面添加一个1
  2. 从倒数第二个开始等于倒数第二个+倒数第三个,也就是相邻的两个相加,形成新的行的值,又不会破坏还未算的数。 例如:1 2 2 1 首先添加个1,变为1 2 2 1 1 然后从倒数第二个开始变化,相邻两个相加。

第一次:1 2 2 3 1

第二次:1 2 4 3 1

第三次:1 3 4 3 1

这样就得到了下一行的数,每次都是一样的方法。

代码

解法1:

class Solution {public:    vector
getRow(int numRows) { vector< vector
> res(numRows+1); vector
t; int i, j; for(i = 0; i < numRows+1; i++) { res[i].resize(i+1);//第i行分配i个列 不可一下子分配n行n列 res[i][0] = 1; res[i][res[i].size()-1] = 1; for(j = 1; j < i; j++) { res[i][j] = res[i-1][j-1] + res[i-1][j]; } } for(j = 0; j < numRows+1; j++) { t.push_back(res[numRows][j]); } return t; }};复制代码

解法2:

class Solution {public:    vector
getRow(int numRows) { vector
t; int i, j; t.push_back(1); if(numRows == 0) return t; t.push_back(1);//numRows = 1时 结果是1 1 for(i = 2; i <= numRows; i++) { t.push_back(1);//先写入1 for(j = i - 1; j > 0; j--) { t[j] = t[j] + t[j-1];//形成新的数 } } return t; }};复制代码

转载于:https://juejin.im/post/5a33b40a6fb9a0451b049bb7

你可能感兴趣的文章
删除有序链表中的重复值 Remove Duplicates from Sorted Array
查看>>
关于系统整合的跑题
查看>>
开发工具,编译器控件
查看>>
Linux 下用 smartd 监测硬盘状况
查看>>
关于编译flex项目的问题
查看>>
redis-cluster创建步骤
查看>>
HT for Web基础动画介绍
查看>>
11g RAC的卸载
查看>>
一个服务器中启动多个tomcat注意端口问题
查看>>
linux 下find的使用
查看>>
最通俗PLC教程—源自Koyo光洋PLC自学总结(1)
查看>>
Perl连接oracle数据库
查看>>
数据交换
查看>>
DIY现榨鲜果汁大全,IT工作者的福利
查看>>
linux 历史
查看>>
人人需具备的基本信息素养视频课程【荷露叮咚】免费
查看>>
zabbix升级版本过程(7)
查看>>
linux驱动之ioctl
查看>>
我的友情链接
查看>>
jxl导出excel
查看>>