美文网首页iOS 底层面试
IOS 算法(基础篇) ----- 找到最高海拔

IOS 算法(基础篇) ----- 找到最高海拔

作者: ShawnAlex | 来源:发表于2021-02-24 15:50 被阅读0次

    有一个自行车手打算进行一场公路骑行,这条路线总共由 n + 1 个不同海拔的点组成。自行车手从海拔为 0 的点 0 开始骑行。
    给你一个长度为 n 的整数数组 gain ,其中 gain[i] 是点 i 和点 i + 1 的 净海拔高度差(0 <= i < n)。请你返回 最高点的海拔 。

    例子:

    输入:gain = [-5,1,5,0,-7]
    输出:1
    解释:海拔高度依次为 [0,-5,-4,1,1,-6] 。最高海拔为 1 。

    输入:gain = [-5,1,5,0,-7]
    输出:1
    解释:海拔高度依次为 [0,-5,-4,1,1,-6] 。最高海拔为 1 。

    解题思路:

    循环法

    其实题意理解清楚, 这道题很简单

    留意下 gain[i] 是点 i 和点 i + 1 的 净海拔高度差

    例如: 初始海拔0, 以 gain = [-5,1,5,0,-7]为例,

    gain[0] = -5, 第一海拔点: 0, 第二个海拔点: -5; -5 - 0 = -5
    gain[1] = 1, 第二海拔点: -5, 第三个海拔点: -4; -4 - (-5) = 1
    gain[2] = 5, 第三海拔点: -4, 第四个海拔点: 1; 1 - (-4) = 5
    gain[3] = 0, 第四海拔点: 1, 第五个海拔点: 1; 1 - 1 = 0
    gain[4] = -7, 第五海拔点: 1, 第六个海拔点: -6; -6 - 1 = -7

    看上面的例子我们可以看到海拔点的依次为 [0,-5,-4,1,1,-6], 则最高海拔为 1

    代码:

    未翻译版

        func largestAltitude(_ gain: [Int]) -> Int {
    
            var result = 0, temp = 0
            
            for i in gain {
    
                temp = temp + i
                result = max(result, temp)
            }
            
            return result
    
        }
    

    翻译版

        func largestAltitude(_ gain: [Int]) -> Int {
    
            // 定义最终值, temp为各个海拔点
            var result = 0, temp = 0
            
            // 循环 
            for i in gain {
                
                // 找到下一个海拔点
                temp = temp + i
                // 取海拔点的最大值
                result = max(result, temp)
            }
            
            // 返回最大值
            return result
    
        }
    

    题目来源:力扣(LeetCode) 感谢力扣爸爸 :)

    IOS 算法合集地址

    相关文章

      网友评论

        本文标题:IOS 算法(基础篇) ----- 找到最高海拔

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