楊輝三角
題目描述:給定一個(gè)非負(fù)整數(shù) numRows讯嫂,生成楊輝三角的前 numRows 行。
在楊輝三角中兆沙,每個(gè)數(shù)是它左上方和右上方的數(shù)的和欧芽。
示例說明請見LeetCode官網(wǎng)。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/pascals-triangle/
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有葛圃。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán)千扔,非商業(yè)轉(zhuǎn)載請注明出處。
解法一:暴力破解法
首先库正,當(dāng)numRows等于1或者2時(shí)曲楚,直接返回固定的前兩行;
當(dāng)numRows大于等于3時(shí)褥符,從第3行開始處理龙誊,假如當(dāng)前行是cur,上一行是last:
- cur的第一個(gè)數(shù)字是1喷楣;
- cur的第二個(gè)數(shù)字到倒數(shù)第二個(gè)數(shù)字(j)是last行的相應(yīng)位置(j-2和j-1)的和趟大;
- cur的最后一個(gè)數(shù)字是1;
- 將cur添加到結(jié)果集result里铣焊。
最后返回result逊朽。
import java.util.ArrayList;
import java.util.List;
public class LeetCode_118 {
public static List<List<Integer>> generate(int numRows) {
List<List<Integer>> result = new ArrayList<>();
List<Integer> one = new ArrayList<>();
one.add(1);
result.add(one);
if (numRows == 1) {
return result;
}
List<Integer> two = new ArrayList<>();
two.add(1);
two.add(1);
result.add(two);
if (numRows == 2) {
return result;
}
for (int i = 3; i <= numRows; i++) {
List<Integer> lastOne = result.get(result.size() - 1);
List<Integer> cur = new ArrayList<>();
cur.add(1);
for (int j = 2; j < i; j++) {
cur.add(lastOne.get(j - 2) + lastOne.get(j - 1));
}
cur.add(1);
result.add(cur);
}
return result;
}
public static void main(String[] args) {
for (List<Integer> integers : generate(5)) {
for (Integer integer : integers) {
System.out.print(integer + " ");
}
System.out.println();
}
}
}
【每日寄語】 以清凈心看世界,以歡喜心過生活曲伊,以平常心生情味惋耙,以柔軟心除掛礙。