【LeetCode】 119. 杨辉三角 II 不正经的骚操作
程序员文章站
2024-01-11 17:17:58
...
题目 |
题目链接:传送门(点击此处)
题解 |
我的两种解法:
正常的递归
class Solution {
public List<Integer> getRow(int rowIndex) {
List<Integer> list = new ArrayList<>();
if (rowIndex == 0) {
list.add(1);
} else if (rowIndex == 1) {
list.add(1);
list.add(1);
} else {
list = getRow(rowIndex - 1);
list.add(1);
int temppre = list.get(0);
int temp = list.get(1);
for (int i = 1; i < rowIndex; i++) {
list.set(i, temppre + temp);
temppre = temp;
temp = list.get(i + 1);
}
}
return list;
}
}
不正经的骚操作
发在力扣的 这里(click here!!!)
class Solution {
public List<Integer> getRow(int rowIndex) {
if (rowIndex == 0) return Arrays.asList(1);
else if (rowIndex == 1) return Arrays.asList(1, 1);
else if (rowIndex == 2) return Arrays.asList(1, 2, 1);
else if (rowIndex == 3) return Arrays.asList(1, 3, 3, 1);
else if (rowIndex == 4) return Arrays.asList(1, 4, 6, 4, 1);
else if (rowIndex == 5) return Arrays.asList(1, 5, 10, 10, 5, 1);
else if (rowIndex == 6) return Arrays.asList(1, 6, 15, 20, 15, 6, 1);
else if (rowIndex == 7) return Arrays.asList(1, 7, 21, 35, 35, 21, 7, 1);
else if (rowIndex == 8) return Arrays.asList(1, 8, 28, 56, 70, 56, 28, 8, 1);
else if (rowIndex == 9) return Arrays.asList(1, 9, 36, 84, 126, 126, 84, 36, 9, 1);
else if (rowIndex == 10) return Arrays.asList(1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1);
else if (rowIndex == 11) return Arrays.asList(1, 11, 55, 165, 330, 462, 462, 330, 165, 55, 11, 1);
else if (rowIndex == 12) return Arrays.asList(1, 12, 66, 220, 495, 792, 924, 792, 495, 220, 66, 12, 1);
else if (rowIndex == 13) return Arrays.asList(1, 13, 78, 286, 715, 1287, 1716, 1716, 1287, 715, 286, 78, 13, 1);
else if (rowIndex == 14) return Arrays.asList(1, 14, 91, 364, 1001, 2002, 3003, 3432, 3003, 2002, 1001, 364, 91, 14, 1);
else if (rowIndex == 15) return Arrays.asList(1, 15, 105, 455, 1365, 3003, 5005, 6435, 6435, 5005, 3003, 1365, 455, 105, 15, 1);
else if (rowIndex == 16) return Arrays.asList(1, 16, 120, 560, 1820, 4368, 8008, 11440, 12870, 11440, 8008, 4368, 1820, 560, 120, 16, 1 );
else if (rowIndex == 17) return Arrays.asList(1, 17, 136, 680, 2380, 6188, 12376, 19448, 24310, 24310, 19448, 12376, 6188, 2380, 680, 136, 17, 1);
else if (rowIndex == 18) return Arrays.asList(1, 18, 153, 816, 3060, 8568, 18564, 31824, 43758, 48620, 43758, 31824, 18564, 8568, 3060, 816, 153, 18, 1);
else if (rowIndex == 19) return Arrays.asList(1, 19, 171, 969, 3876, 11628, 27132, 50388, 75582, 92378, 92378, 75582, 50388, 27132, 11628, 3876, 969, 171, 19, 1 );
else if (rowIndex == 20) return Arrays.asList(1, 20, 190, 1140, 4845, 15504, 38760, 77520, 125970, 167960, 184756, 167960, 125970, 77520, 38760, 15504, 4845, 1140, 190, 20, 1);
else if (rowIndex == 21) return Arrays.asList(1, 21, 210, 1330, 5985, 20349, 54264, 116280, 203490, 293930, 352716, 352716, 293930, 203490, 116280, 54264, 20349, 5985, 1330, 210, 21, 1);
else if (rowIndex == 22) return Arrays.asList(1, 22, 231, 1540, 7315, 26334, 74613, 170544, 319770, 497420, 646646, 705432, 646646, 497420, 319770, 170544, 74613, 26334, 7315, 1540, 231, 22, 1);
else if (rowIndex == 23) return Arrays.asList(1, 23, 253, 1771, 8855, 33649, 100947, 245157, 490314, 817190, 1144066, 1352078, 1352078, 1144066, 817190, 490314, 245157, 100947, 33649, 8855, 1771, 253, 23, 1 );
else if (rowIndex == 24) return Arrays.asList(1, 24, 276, 2024, 10626, 42504, 134596, 346104, 735471, 1307504, 1961256, 2496144, 2704156, 2496144, 1961256, 1307504, 735471, 346104, 134596, 42504, 10626, 2024, 276, 24, 1 );
else if (rowIndex == 25) return Arrays.asList(1, 25, 300, 2300, 12650, 53130, 177100, 480700, 1081575, 2042975, 3268760, 4457400, 5200300, 5200300, 4457400, 3268760, 2042975, 1081575, 480700, 177100, 53130, 12650, 2300, 300, 25, 1);
else if (rowIndex == 26) return Arrays.asList(1, 26, 325, 2600, 14950, 65780, 230230, 657800, 1562275, 3124550, 5311735, 7726160, 9657700, 10400600, 9657700, 7726160, 5311735, 3124550, 1562275, 657800, 230230, 65780, 14950, 2600, 325, 26, 1);
else if (rowIndex == 27) return Arrays.asList(1, 27, 351, 2925, 17550, 80730, 296010, 888030, 2220075, 4686825, 8436285, 13037895, 17383860, 20058300, 20058300, 17383860, 13037895, 8436285, 4686825, 2220075, 888030, 296010, 80730, 17550, 2925, 351, 27, 1 );
else if (rowIndex == 28) return Arrays.asList(1, 28, 378, 3276, 20475, 98280, 376740, 1184040, 3108105, 6906900, 13123110, 21474180, 30421755, 37442160, 40116600, 37442160, 30421755, 21474180, 13123110, 6906900, 3108105, 1184040, 376740, 98280, 20475, 3276, 378, 28, 1);
else if (rowIndex == 29) return Arrays.asList(1, 29, 406, 3654, 23751, 118755, 475020, 1560780, 4292145, 10015005, 20030010, 34597290, 51895935, 67863915, 77558760, 77558760, 67863915, 51895935, 34597290, 20030010, 10015005, 4292145, 1560780, 475020, 118755, 23751, 3654, 406, 29, 1 );
else if (rowIndex == 30) return Arrays.asList(1, 30, 435, 4060, 27405, 142506, 593775, 2035800, 5852925, 14307150, 30045015, 54627300, 86493225, 119759850, 145422675, 155117520, 145422675, 119759850, 86493225, 54627300, 30045015, 14307150, 5852925, 2035800, 593775, 142506, 27405, 4060, 435, 30, 1 );
else if (rowIndex == 31) return Arrays.asList(1, 31, 465, 4495, 31465, 169911, 736281, 2629575, 7888725, 20160075, 44352165, 84672315, 141120525, 206253075, 265182525, 300540195, 300540195, 265182525, 206253075, 141120525, 84672315, 44352165, 20160075, 7888725, 2629575, 736281, 169911, 31465, 4495, 465, 31, 1);
else if (rowIndex == 32) return Arrays.asList(1, 32, 496, 4960, 35960, 201376, 906192, 3365856, 10518300, 28048800, 64512240, 129024480, 225792840, 347373600, 471435600, 565722720, 601080390, 565722720, 471435600, 347373600, 225792840, 129024480, 64512240, 28048800, 10518300, 3365856, 906192, 201376, 35960, 4960, 496, 32, 1);
else if (rowIndex == 33) return Arrays.asList(1, 33, 528, 5456, 40920, 237336, 1107568, 4272048, 13884156, 38567100, 92561040, 193536720, 354817320, 573166440, 818809200, 1037158320, 1166803110, 1166803110, 1037158320, 818809200, 573166440, 354817320, 193536720, 92561040, 38567100, 13884156, 4272048, 1107568, 237336, 40920, 5456, 528, 33, 1);
else return new ArrayList<>();
}
}