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

有一个自行车手打算进行一场公路骑行,这条路线总共由 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 算法(基础篇) ----- 找到最高海拔)