化簡無所不在! 用化簡來解 最大的對偶數。Leetcode #2441

更新於 2024/06/18閱讀時間約 2 分鐘

題目敘述

給定一個非零陣列nums,請找出陣列裡面 最大的對偶數 是誰?

如果無解,請返回-1


對偶數定義: 整數k的對偶數是-k

例如: 99 和 -99互為對偶數。


約束條件

Constraints:

  • 1 <= nums.length <= 1000

輸入陣列長度介於 1 ~ 1000 之間。

  • -1000 <= nums[i] <= 1000

每個元素值介於 -1000~1000之間。

  • nums[i] != 0

每個元素值都不等於0


演算法 化簡到Two-sum

跟著題目、範例思考,可以發現,其實這題就是Two sum兩數之和的變形。

原本兩數之和是在找 x + y = target

這邊特化成,找對偶的 x + (-x) = target = 0 目標值固定是0


基本想法是類似的,依序掃描每個元素,每次看過的數字記錄起來,遇到對偶數 -x的時候,更新對偶數的最大值,最後回傳最大的對偶數,就是答案。


程式碼 化簡到Two-sum

class Solution:
def findMaxK(self, nums: List[int]) -> int:

#記錄看過的數字
history = set()
maxNum = -1

for number in nums:

# 發現對偶數存在
if -number in history:

# 更新對偶數的最大值
maxNum = max( maxNum, abs(number) )

# 把看過的數字記錄下來
history.add(number)

return maxNum

複雜度分析

時間複雜度: O(n)

線性掃描,從左到右掃描每個陣列元素,總共耗時O(n)


空間複雜度: O(n)

建立了一個集合,大小最大為元素總數,所占空間為O(n)


關鍵知識點

尋找對偶數,相當於找兩數之和 x + y = 0, 且 y = -x

也可以說就是在找 x + (-x) = 0,並且找出所有解集合裡面x的最大值

可以回去複習兩數之和這題,兩題考的其實是同一個觀念。


Reference:

[1] Largest Positive Integer That Exists With Its Negative - LeetCode

avatar-img
90會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目敘述 給定一個piles陣列,裡面對應到每堆石頭的數量。 Alice 和 Bob玩輪流取石頭的遊戲,總共有n堆石頭,每堆的石頭數量有多有少。 Alice先取,接著Bob,反覆交替,每回合輪到的人可以從當下的第一堆或者最後一堆,拿走那堆對應的石頭。 最後比誰拿到的石頭總數量比較多就獲勝。
在沙龍主頁面的右上角,現在多一個放大鏡圖案的搜尋介面。 裡面可以輸入你想看的主題、關鍵字或者Leetcode題號, 就可以找到相關的文章與演算法框架分析。 例如: 搜尋 DFS 搜尋 DP 搜尋 圖論 搜尋 Coin Change ... 歡迎舊雨新知多多利用!
演算法映射化簡的核心觀念 在面對新題目的時候,除了重頭想一個新的演算法之外; 還有另一個方法,想看看有沒有核心觀念彼此相同的問題與演算法, 如果有,就可以把新的題目映射化簡到已知解法的問題,用已知的演算法去解開。 接著,我們會介紹幾個範例,並且使用映射化簡的技巧來解題,透過化
給定一個Linked list鏈結串列的Head node, 請判斷這條Linked list是否存在環路(Cycle)? 如果有環路,回傳True。 如果沒有,回傳False。
這篇文章,會帶大家快速回顧DFS+回溯法框架(還沒看過或想複習的可以點連結進去)。 用DFS+回溯法框架,解開 組合數之和 Combination Sum 的全系列題目。 幫助讀者鞏固DFS+回溯法框架這個重要的知識點。 回顧 DFS+回溯法框架 白話的意思 # 列舉所以可能的情況,
這篇文章,會帶著大家複習以前學過的 格子點DP框架, 並且以最小成本的下降路徑的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 最小成本下降路徑的形式 每個格子點的值代表經過的成本。 要求從最上面那排往下方走,落到最下一排的最小成本的下降路徑。
題目敘述 給定一個piles陣列,裡面對應到每堆石頭的數量。 Alice 和 Bob玩輪流取石頭的遊戲,總共有n堆石頭,每堆的石頭數量有多有少。 Alice先取,接著Bob,反覆交替,每回合輪到的人可以從當下的第一堆或者最後一堆,拿走那堆對應的石頭。 最後比誰拿到的石頭總數量比較多就獲勝。
在沙龍主頁面的右上角,現在多一個放大鏡圖案的搜尋介面。 裡面可以輸入你想看的主題、關鍵字或者Leetcode題號, 就可以找到相關的文章與演算法框架分析。 例如: 搜尋 DFS 搜尋 DP 搜尋 圖論 搜尋 Coin Change ... 歡迎舊雨新知多多利用!
演算法映射化簡的核心觀念 在面對新題目的時候,除了重頭想一個新的演算法之外; 還有另一個方法,想看看有沒有核心觀念彼此相同的問題與演算法, 如果有,就可以把新的題目映射化簡到已知解法的問題,用已知的演算法去解開。 接著,我們會介紹幾個範例,並且使用映射化簡的技巧來解題,透過化
給定一個Linked list鏈結串列的Head node, 請判斷這條Linked list是否存在環路(Cycle)? 如果有環路,回傳True。 如果沒有,回傳False。
這篇文章,會帶大家快速回顧DFS+回溯法框架(還沒看過或想複習的可以點連結進去)。 用DFS+回溯法框架,解開 組合數之和 Combination Sum 的全系列題目。 幫助讀者鞏固DFS+回溯法框架這個重要的知識點。 回顧 DFS+回溯法框架 白話的意思 # 列舉所以可能的情況,
這篇文章,會帶著大家複習以前學過的 格子點DP框架, 並且以最小成本的下降路徑的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 最小成本下降路徑的形式 每個格子點的值代表經過的成本。 要求從最上面那排往下方走,落到最下一排的最小成本的下降路徑。
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
國中數學第三冊 第一單元 乘法公式與多項式 1-2 多項式與其加減 例題解說
Thumbnail
高中數學主題練習—算幾不等式(一)
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
國中數學第三冊 第一單元 乘法公式與多項式 1-2 多項式與其加減 例題解說
Thumbnail
高中數學主題練習—算幾不等式(一)