[leetcode] 807. Max Increase to Keep City Skyline

阿蘇卡
2 min readSep 18, 2020

--

聽說不刷題就落伍了~ 我也來加入訓練的行列!

leetcode 上有很多神人的解答,有更短的程式碼、更快的計算速度,有興趣可以移駕原文參考。

資管出身的我,演算法不是我的強項,因此將重點放在題目理解與重點說明、程式碼的易讀性,畢竟團隊工作中,架構清晰、易維護的程式碼是對團隊工作效率與品質更有利的事。

好,開始踏上leetcode之路囉!!

題目描述 (中等難度)

原考題請見

解題說明

求出每個位置可以增加的最大值之差值總和,條件是不能大於所在該行,與該列元素中最大值。

例如:位置 (0, 0) 所在該行所有元素為 [3, 0, 8, 4],最大值為 8 ;該列 [3, 2, 9, 0],最大值為 9,在不影響行列最大值的條件下,新值最大為 8

目前值為 3,與新值差值為 8 - 3 = 5。以此類推,將差值加總即為解答。

解法

  1. 找出 (0, 0) 所在行(x = 0)的最大值 (maxX)、所在列(y = 0)的最大值 (maxY),兩值較小者為此位置新值
  2. 將上步驟求得值,減去此位置原值
  3. 重複以上步驟,遍歷所有位置,加總步驟 2 的值即為解答

原題目沒有提到陣列是否為正方形,以上解法可容許二維陣列元素數量不同。

--

--

阿蘇卡
阿蘇卡

Written by 阿蘇卡

後端工程師。記錄下自己開發路上踩過的坑、研究過後的心得,希望對自己好,對其他工程師也好~

No responses yet