Daily Coding Problem: Problem #672

复制代码
/**
 * This problem was asked by Google.
You are given an array of arrays of integers, where each array corresponds to a row in a triangle of numbers.
For example, [[1], [2, 3], [1, 5, 1]] represents the triangle:
  1
 2 3
1 5 1
We define a path in the triangle to start at the top and go down one row at a time to an adjacent value,
eventually ending with an entry on the bottom row. For example, 1 -> 3 -> 5.
The weight of the path is the sum of the entries.
Write a program that returns the weight of the maximum weight path.
 * */
class Problem_672 {
    fun maxPathWeight(triange: Array<IntArray>): Int {
        val m = triange.size
        val n = triange[0].size
        help(triange, m - 1, n - 1)
        //result save in top left
        return triange[0][0]
    }

    //loop for bottom up
    private fun help(triange: Array<IntArray>, m: Int, n: Int) {
        for (i in m-1 downTo 0) {
            for (j in 0..i) {
                if (triange[i + 1][j] > triange[i + 1][j + 1]) {
                    triange[i][j] += triange[i + 1][j]
                } else {
                    triange[i][j] += triange[i + 1][j + 1]
                }
            }
        }
    }
}
复制代码

 

posted @   johnny_zhao  阅读(76)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示