前綴和應用: 尋找旅途中的海拔最高點_Leetcode #1732 精選75題解析

2024/02/29閱讀時間約 2 分鐘

題目敘述

假想一位自行車手正在公路旅行,旅行起始點從海拔為0的地方開始出發,給定每個紀錄點的高度位移向量陣列gain,請問整趟旅途中的海拔最高點是多少?


題目的原文敘述


測試範例

Example 1:

Input: gain = [-5,1,5,0,-7]
Output: 1
Explanation: The altitudes are [0,-5,-4,1,1,-6]. The highest is 1.
每個記錄點的高度分別為​[0,-5,-4,1,1,-6]
最高高度是1

Example 2:

Input: gain = [-4,-3,-2,-1,4,3,2]
Output: 0
Explanation: The altitudes are [0,-4,-7,-9,-10,-6,-3,-1]. The highest is 0.
每個記錄點的高度分別為[0,-4,-7,-9,-10,-6,-3,-1]
最高高度是0

演算法

題目的每個紀錄點的高度位移向量陣列gain,又說起始點的高度為0。

那麼,只要依序累加每個紀錄點的位移向量,就能得到每個紀錄點的海拔高度

每回合迭代的時候,動態更新當下記錄到的高度,並且維護整趟旅途的海拔高度最大值


程式碼

class Solution:
def largestAltitude(self, gain: List[int]) -> int:

# altitude of current point
cur = 0

# global record of highest altitude
highest = 0

for offset in gain:

# compute altitude for current point
cur += offset

# update global highest altitude
highest = max(highest, cur)

return highest

複雜度分析

時間複雜度:

從頭到尾掃描過每個陣列元素,所需時間為O(n)。

空間複雜度:

所使用到的都是固定尺寸的臨時變數,所佔用的記憶體空間為O(1)。


Reference:

[1] Python O(n) by linear scan [w/ Visualization]

以行動支持創作者!付費即可解鎖
本篇內容共 1088 字、0 則留言,僅發佈於Leetcode 精選75題 上機考面試題 詳解你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
39會員
277內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!