#力扣 LeetCode119. 楊輝三角 II #在所有 Java 提交中擊敗了100.00%的使用者 @FDDLC
阿新 • • 發佈:2020-12-13
題目描述:
https://leetcode-cn.com/problems/pascals-triangle-ii/
Java程式碼:
import java.util.LinkedList; import java.util.List; class Solution { public List<Integer> getRow(int rowIndex) { List<Integer> answer=new LinkedList<>(); int[][] triangle=new int[rowIndex+1][rowIndex+1]; for(int r=0;r<=rowIndex;r++){ for(int c=0;c<=r;c++){ if(c==0||c==r)triangle[r][c]=1; else triangle[r][c]=triangle[r-1][c-1]+triangle[r-1][c]; } } for(int c=0;c<=rowIndex;c++)answer.add(triangle[rowIndex][c]); return answer; } }
Java程式碼二:
import java.util.LinkedList; import java.util.List; class Solution { public List<Integer> getRow(int rowIndex) { List<Integer> answer=new LinkedList<>(); int[][] triangle=new int[2][rowIndex+1]; for(int r=0;r<=rowIndex;r++){ for(int c=0;c<=r;c++){ if(c==0||c==r)triangle[r%2][c]=1; else triangle[r%2][c]=triangle[(r+1)%2][c-1]+triangle[(r+1)%2][c]; //(r+1)%2、r%2永遠是一個0,一個1 } } for(int c=0;c<=rowIndex;c++)answer.add(triangle[rowIndex%2][c]); return answer; } }
Java程式碼三:
import java.util.AbstractList; import java.util.List; class Solution { public List<Integer> getRow(int rowIndex) { return new AbstractList<Integer>() { @Override public Integer get(int index) { int[][] triangle=new int[2][rowIndex+1]; for(int r=0;r<=rowIndex;r++){ for(int c=0;c<=r;c++){ if(c==0||c==r)triangle[r%2][c]=1; else triangle[r%2][c]=triangle[(r+1)%2][c-1]+triangle[(r+1)%2][c]; //(r+1)%2、r%2永遠是一個0,一個1 } } return triangle[rowIndex%2][index]; } @Override public int size() { return rowIndex+1; } }; } }
Java程式碼四:
import java.util.Arrays;
import java.util.List;
class Solution {
public List<Integer> getRow(int rowIndex) {
Integer[] a=new Integer[rowIndex+1];
for(int r=0;r<=rowIndex;r++){
for(int c=r;c>=0;c--){ //注意:要從後往前,因為a[c]+=a[c-1]!
if(c==0||c==r)a[c]=1;
else a[c]+=a[c-1];
}
}
return Arrays.asList(a);
}
}
簡寫:
import java.util.Arrays;
import java.util.List;
class Solution {
public List<Integer> getRow(int rowIndex) {
Integer[] a=new Integer[rowIndex+1];
for(int r=0;r<=rowIndex;r++) for(int c=r;c>=0;c--)a[c]=(c==0||c==r)?1:a[c]+a[c-1];
return Arrays.asList(a);
}
}
優化:
import java.util.Arrays;
import java.util.List;
class Solution {
public List<Integer> getRow(int rowIndex) {
Integer[] a=new Integer[rowIndex+1];
a[0]=1;
for(int r=1;r<=rowIndex;r++) for(int c=r;c>=1;c--)a[c]=(c==r)?1:a[c]+a[c-1];
return Arrays.asList(a);
}
}