Given an integer numRows, return the first numRows of Pascal's triangle.
In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:
정수 numRows가 주어지면 Pascal의 삼각형의 첫 번째 numRows를 반환합니다.
Pascal의 삼각형에서 각 숫자는 표시된 대로 바로 위에 있는 두 숫자의 합입니다.
Example 1:
Input: numRows = 5
Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
Example 2:
Input: numRows = 1
Output: [[1]]
Constraints:
- 1 <= numRows <= 30
코드 1
- 파스칼 삼각형의 첫 번째 행은 [1] 이다.
- 두 번째 numRow 부터는 이전 numRow 의 크기 + 1 만큼의 크기를 가진다.
- 이전 numRow 의 인접한 두 요소를 더하여 현재 행의 요소를 계산한다. 계산을 편하게 하기 위해 양 끝에 [0] 을 추가한다.
class Solution {
fun generate(numRows: Int): List<List<Int>> {
val answer = mutableListOf(listOf(1))
for (i in 1 until numRows) {
val row = mutableListOf<Int>()
val temp = listOf(0) + answer[i - 1] + listOf(0)
for (j in 0..i) {
row.add(temp[j] + temp[j + 1])
}
answer.add(row)
}
return answer
}
}
코드 2
- numRow 는 행 번호만큼의 크기를 가진다.
- 세 번째 numRow 부터는 양 끝을 제외한 나머지 부분을 이전 numRow 의 인접한 두 요소를 더하여 현재 행의 요소를 계산한다.
class Solution {
fun generate(numRows: Int): List<List<Int>> {
val answer = mutableListOf<List<Int>>()
for (i in 0 until numRows) {
val row = MutableList(i + 1) { 1 }
if (i > 1) {
for (j in 1 until i) {
row[j] = answer[i - 1][j - 1] + answer[i - 1][j]
}
}
answer.add(row)
}
return answer
}
}
'LeetCode > Array & Hashing' 카테고리의 다른 글
[LeetCode][Kotlin] 605. Can Place Flowers (0) | 2024.08.14 |
---|---|
[LeetCode][Kotlin] 49. Group Anagrams (0) | 2024.08.13 |
[LeetCode][Kotlin] 242. Valid Anagram (0) | 2024.08.12 |