LeetCode_08:Pascal's Triangle

1、总结:

这个题拖太久了,没什么总结,技术含量和优化方向暂时也没有什么思路,老实敲代码就是了;
需要注意的就是边界元素的处理。

2、题目:

Given a non-negative integer numRows, generate the first numRows of Pascal’s triangle.
在这里插入图片描述
In Pascal’s triangle, each number is the sum of the two numbers directly above it.
Example:

	Input: 5
	Output:
	[
	     [1],
	    [1,1],
	   [1,2,1],
	  [1,3,3,1],
	 [1,4,6,4,1]
	]
3、我的解法:

老规矩,笨办法先实现一波:

	/**
	 * @param {number} numRows
	 * @return {number[][]}
	 */
	var generate = function(numRows) {
	    let rowNum = 1;
	    let columnNum = 0;
	    let result = [];
	    let tempRow = [];
	    
	    if(numRows > 0) {     
	        result.unshift([1]);   
	    }
	    while(rowNum < numRows && columnNum < numRows) {
	        
	        if(columnNum == 0) {
	            tempRow.push(1);
	            columnNum++;
	            continue;
	        }        
	        if(columnNum < rowNum) {
	            tempRow.push(parseInt(result[rowNum-1][columnNum-1]) +  parseInt(result[rowNum-1][columnNum]));            
	            columnNum++;
	            continue;
	        }
	        if(columnNum = rowNum) {
	            tempRow.push(1);
	            result.push(tempRow);
	            tempRow = [];            
	            rowNum++;
	            columnNum = 0;
	            continue;
	        }
	    }
	    return result;
	};

在这里插入图片描述

看了一下solution,思路与我的思路无异,就是解法用了双层for循环,我用的是while循环;
再for循环实现一波,感觉效率:

	// 方法二:
	var generate = function(numRows) {
	    const result = [];
	    for(let i = 0; i < numRows; i++) {
	        result[i] = [];
	        for(let j = 0; j <= i; j++) {
	            if(j === 0 || j === i) {
	                result[i][j] = 1;
	            } else {             
	                result[i][j] = parseInt(result[i-1][j-1]) + parseInt(result[i-1][j]);   
	            }
	        }
	    }
	    return result;
	};

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值