付費限定

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

更新於 2024/09/03閱讀時間約 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(n)。

空間複雜度:O(1)

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


Reference:

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

以行動支持創作者!付費即可解鎖
本篇內容共 1088 字、2 則留言,僅發佈於Leetcode精選75題 解析+統整你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
avatar-img
90會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目敘述 題目會給定一個二元陣列nums(也就是說,陣列元素只有0,1這兩種情況)。 我們必須從裡面選擇一個元素刪除之後,請問連續為1的最長子陣列的長度是多少? 測試範例 Example 1: Input: nums = [1,1,0,1] Output: 3 Explanation:
題目敘述 題目會給定一個二元陣列nums(也就是說,陣列元素只有0,1這兩種情況)和指定的k值。 我們最多可以把k個0反轉成1,請問連續唯一的最長子陣列的長度是多少? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,1,1,0,0,0,1,1,1,1,
題目敘述 題目會給定一個字串s,和指定長度k,問我們包含母音的子字串中,母音數量的最大值是多少? 題目的原文敘述 測試範例 Example 1: Input: s = "abciiidef", k = 3 Output: 3 Explanation: The substring "iii
題目敘述 題目會給定一個有n個整數的陣列nums和指定的k值,問我們長度為k的子陣列的平均值的最大值是多少? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,12,-5,-6,50,3], k = 4 Output: 12.75000 Explanati
題目敘述 題目會給定我們一個整數陣列nums,我們每回合可以挑選總和為K的兩個數字,形成一個K-Sum pair。 請問我們最多可以製造幾個K-Sum pair? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4], k = 5 Output
題目敘述 題目會給定我們一個整數陣列nums,要求我們把裡面的0做元素交換,把0都搬到陣列的右邊。題目要求必須in-place在原本的陣列裡面做操作,不可以額外建立新的陣列。 題目的原文敘述 測試範例 Example 1: Input: nums = [0,1,0,3,12] Outpu
題目敘述 題目會給定一個二元陣列nums(也就是說,陣列元素只有0,1這兩種情況)。 我們必須從裡面選擇一個元素刪除之後,請問連續為1的最長子陣列的長度是多少? 測試範例 Example 1: Input: nums = [1,1,0,1] Output: 3 Explanation:
題目敘述 題目會給定一個二元陣列nums(也就是說,陣列元素只有0,1這兩種情況)和指定的k值。 我們最多可以把k個0反轉成1,請問連續唯一的最長子陣列的長度是多少? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,1,1,0,0,0,1,1,1,1,
題目敘述 題目會給定一個字串s,和指定長度k,問我們包含母音的子字串中,母音數量的最大值是多少? 題目的原文敘述 測試範例 Example 1: Input: s = "abciiidef", k = 3 Output: 3 Explanation: The substring "iii
題目敘述 題目會給定一個有n個整數的陣列nums和指定的k值,問我們長度為k的子陣列的平均值的最大值是多少? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,12,-5,-6,50,3], k = 4 Output: 12.75000 Explanati
題目敘述 題目會給定我們一個整數陣列nums,我們每回合可以挑選總和為K的兩個數字,形成一個K-Sum pair。 請問我們最多可以製造幾個K-Sum pair? 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4], k = 5 Output
題目敘述 題目會給定我們一個整數陣列nums,要求我們把裡面的0做元素交換,把0都搬到陣列的右邊。題目要求必須in-place在原本的陣列裡面做操作,不可以額外建立新的陣列。 題目的原文敘述 測試範例 Example 1: Input: nums = [0,1,0,3,12] Outpu
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
爬升450 公尺單程1.5公里,來回時間2小時 🛤️ 大關山隧道口 ▸落石崩壁 ▸ 樹林+拉繩 ▸ 稜線 ▸ 三角點 下坡的技巧 第一關-克服心裡不剎車障礙 落差大的下坡踩剎車既危險又費腿,因觸地時間長,會讓力集中在腳掌上 第二關-後腳跟著地
Thumbnail
這天訪視的大哥,今年64歲,雖然不是我服務的個案中,年齡最高的,卻是我訪視的地點中,海拔最高的! 沒錯,我和夥伴從台中開2個多小時的車,走進雲霧繚繞、讓人心曠神怡的美麗清境山景中。
Thumbnail
這趟路程我負重11公斤,對於鮮少負重的我,累的是嫑嫑的。路途很有原始氣息,總里程約26公里,爬升約1440公尺。全自理接駁車一趟是3000元左右,超值行程 想對自己體能來個挑戰的,非常推薦。若是百岳新手推薦走向陽傳統路線,又美麗又可以輕裝。
山路愈彎車速愈慢 崎嶇顛簸需要沉著面對 海闊天空跟絕崖峭壁值得停留 疲憊之前更必須休息 油量不足前加滿油 不用急!人生旅程總會結束 順著車流或路況遊賞生活吧
去走 沒走過的路 去看 沒看過的風景 一步一步走過每一段旅程 一張一張拍下每一片風景
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
爬升450 公尺單程1.5公里,來回時間2小時 🛤️ 大關山隧道口 ▸落石崩壁 ▸ 樹林+拉繩 ▸ 稜線 ▸ 三角點 下坡的技巧 第一關-克服心裡不剎車障礙 落差大的下坡踩剎車既危險又費腿,因觸地時間長,會讓力集中在腳掌上 第二關-後腳跟著地
Thumbnail
這天訪視的大哥,今年64歲,雖然不是我服務的個案中,年齡最高的,卻是我訪視的地點中,海拔最高的! 沒錯,我和夥伴從台中開2個多小時的車,走進雲霧繚繞、讓人心曠神怡的美麗清境山景中。
Thumbnail
這趟路程我負重11公斤,對於鮮少負重的我,累的是嫑嫑的。路途很有原始氣息,總里程約26公里,爬升約1440公尺。全自理接駁車一趟是3000元左右,超值行程 想對自己體能來個挑戰的,非常推薦。若是百岳新手推薦走向陽傳統路線,又美麗又可以輕裝。
山路愈彎車速愈慢 崎嶇顛簸需要沉著面對 海闊天空跟絕崖峭壁值得停留 疲憊之前更必須休息 油量不足前加滿油 不用急!人生旅程總會結束 順著車流或路況遊賞生活吧
去走 沒走過的路 去看 沒看過的風景 一步一步走過每一段旅程 一張一張拍下每一片風景