美文网首页
IOS 算法(基础篇) ----- 杨辉三角I

IOS 算法(基础篇) ----- 杨辉三角I

作者: ShawnAlex | 来源:发表于2021-01-13 16:44 被阅读0次

    给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。

    triangle

    在杨辉三角中,每个数是它左上方和右上方的数的和。

    例如:
    输入: 3
    输出:
    [
    [1],
    [1,1],
    [1,2,1]
    ]

    输入: 5
    输出:
    [
    [1],
    [1,1],
    [1,2,1],
    [1,3,3,1],
    [1,4,6,4,1]
    ]

    我们可以机械翻译得

        func generate(_ numRows: Int) -> [[Int]] {
    
            if numRows == 0 { return [] }
            if numRows == 1 { return [[1]] }
            if numRows == 2 { return [[1], [1, 1]]}
            
            var last:[Int] = [1, 1], result:[[Int]] = [[1], [1, 1]]
            
            for i in 1..<numRows - 1 {
                last = calnew(result[i])
                result.append(last)
            }
    
            return result
            
        }
        
        func calnew(_ last: [Int]) -> [Int] {
            
            var result:[Int] = [1]
            for i in 1..<last.count {
                result.append(last[i] + last[i - 1])
            }
            result.append(1)
            return result
          
        }
    

    整理可得

        func generate(_ numRows: Int) -> [[Int]] {
            
            var result = [[Int]]()
            
            for rowIndex in 0..<numRows {
                
                var row = [Int](repeating: 0, count: rowIndex + 1)
                (row[0], row[row.count - 1]) = (1, 1)
                
                for j in stride(from: 1, to: row.count - 1, by: 1) {
                    row[j] = result[rowIndex - 1][j - 1] + result[rowIndex - 1][j]
                }
                
                result.append(row)
                
            }
            return result
            
        }
    
    

    题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
    IOS 算法合集地址

    相关文章

      网友评论

          本文标题:IOS 算法(基础篇) ----- 杨辉三角I

          本文链接:https://www.haomeiwen.com/subject/phzuaktx.html