★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-tyyyuwlo-me.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle.git
Note that the row index starts from 0.github
In Pascal's triangle, each number is the sum of the two numbers directly above it.數組
Example:微信
Input: 3 Output: [1,3,3,1]
給定一個非負索引 k,其中 k ≤ 33,返回楊輝三角的第 k 行。app
在楊輝三角中,每一個數是它左上方和右上方的數的和。spa
示例:code
輸入: 3 輸出: [1,3,3,1]
1 class Solution { 2 func getRow(_ rowIndex: Int) -> [Int] { 3 //滾動數組 4 var arr:Array = Array(repeating: 1, count: (rowIndex+1)) 5 for i in 0..<rowIndex 6 { 7 // 第一個元素 不須要計算 因此j從 1 開始 8 // i+1 表明最後一個元素: < (i+1) 表示最後一個元素不用計算 9 for j in (1 ..< (i+1)).reversed() 10 { 11 // 從後往前計算, 防止覆蓋 12 arr[j] = arr[j] + arr[j - 1] 13 } 14 } 15 return arr 16 } 17 }
8mshtm
1 class Solution { 2 func getRow(_ rowIndex: Int) -> [Int] { 3 var memo: [[Int]] = [[1], [1, 1]] 4 if rowIndex <= 1 { return memo[rowIndex] } 5 return calculateRows(memo, rowIndex) 6 } 7 8 func calculateRows (_ memo: [[Int]], _ rowIndex: Int) -> [Int] { 9 if memo.count-1 == rowIndex { return memo[rowIndex] } 10 var dp = memo 11 var prevArr = dp[dp.count-1] 12 var arr = Array(repeating: 0, count: prevArr.count+1) 13 arr[0] = 1 14 arr[arr.count-1] = 1 15 16 for i in 1..<arr.count-1 { 17 arr[i] = prevArr[i-1]+prevArr[i] 18 } 19 20 dp.append(arr) 21 return calculateRows(dp, rowIndex) 22 } 23 }
8msblog
1 class Solution { 2 func getRow(_ rowIndex: Int) -> [Int] { 3 if rowIndex == 0 { 4 return [1] 5 } 6 var result = [Int](repeatElement(0, count: rowIndex + 1)) 7 result[0] = 1 8 for i in 1...rowIndex { 9 var j = i 10 while j >= 1 { 11 result[j] += result[j - 1] 12 j -= 1 13 } 14 } 15 return result 16 } 17 }