[Swift]LeetCode119. 楊輝三角 II | Pascal's Triangle II

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(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,返回楊輝三角的第 行。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 }
相關文章
相關標籤/搜索