其他分享
首页 > 其他分享> > 2022.1.20 LeetCode总结

2022.1.20 LeetCode总结

作者:互联网

文章目录


一、今日刷题

第一部分:数组 – 第118题
跳转LeetCode

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:

输入: numRows = 1
输出: [[1]]


答案代码:
每个数字等于上一行的左右两个数字之和,可用此性质写出整个杨辉三角。即第 n 行的第 i 个数等于第 n - 1 行的第 i - 1 个数和第 i 个数之和 ​ 做题时就是这个数学关系(上一行的左右两个数字等效为i - 1, i)没找到,并且对于List的get()方法不熟悉。
import java.util.ArrayList;
import java.util.List;

/**118.杨辉三角:给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
 在「杨辉三角」中,每个数是它左上方和右上方的数的和。
 * @date 2022年01月20日 09:24
 */
public class Generate {
	public static void main(String[] args) {
		List<List<Integer>> list = new ArrayList<>();
		list = generate(5);
		for (List<Integer> list1 : list) {
			System.out.println(list1);
		}
	}

	public static List<List<Integer>> generate(int numRows) {
		List<List<Integer>> result = new ArrayList<>();
		for (int i = 0; i < numRows; i++) {
			List<Integer> row = new ArrayList<>();
			for (int j = 0; j <= i; j++) {
				if (j == 0 || j == i) {
					row.add(1);
				} else {
					int firstAdd = result.get(i - 1).get(j - 1);
					int secondAdd = result.get(i - 1).get(j);
					row.add(firstAdd + secondAdd);
				}
			}
			result.add(row);
		}
		return result;
	}
}


二、知识积累:

1.for循环中的 i++ 与 ++i:

先上结论:二者对于循环结果的影响并无区别,不过在运行时间上,++i使用的执行时间更短。

①for (int i=0; i<10; i++):

for(int i = 0; i<10; i++) {
    System.out.println(i);
}

等价于:

for(int i=0; i<10;)
{
    System.out.println(i);
    i++;
}

②for (int i=0; i<10; ++i):

for(int i = 0; i<10; ++i) {
    System.out.println(i);
}

等价于:

for(int i=0; i<10;)
{
    System.out.println(i);
    ++i;
}

打印出的结果相同

标签:20,get,int,List,numRows,++,杨辉三角,LeetCode,2022.1
来源: https://blog.csdn.net/alyzajlm/article/details/122594907