LeetCode 解題練習:Largest Number At Least Twice of Others
題目原文描述 https://leetcode.com/problems/largest-number-at-least-twice-of-others/ 這一題主要觀念: 陣列走訪(Array Traversal) 最大值搜尋(Maximum Search) 一次掃描技巧(One Pass) 空間最佳化(Space Optimization) 屬於 LeetCode 的經典陣列入門題目。 中文描述 : 給定一個 整數陣列 nums,保證陣列中存在 唯一最大值 。請判斷這個最大值是否 至少是其他所有元素的兩倍 。若是,則回傳該最大值在陣列中的 索引 ;若否,則回傳 -1。 範例一 : Python 輸入: nums = [ 1 , 2 , 3 , 6 , 2 , 3 , 1 ] 輸出: 3 解釋:最大值是 6(位於索引 3),其他元素為 1,2,3,2,3,1,其中最大的其他元素是 3,6 >= 2*3,滿足條件。 範例二 : Python 輸入: nums = [ 1 , 2 , 3 , 4 , 6 ] 輸出: - 1 解釋:最大值是 6,但存在 4,6 < 2*4,不滿足條件。 關鍵特性 : 最大值 唯一 (不會有兩個相同最大值)。 陣列長度至少為 1。 元素可能包含 0 或負數(但最大值仍是唯一最大的)。 解法一:Two Pass(兩次遍歷) 這個解法的直覺是「分兩步走」:先找出老大是誰,再回頭檢查老大有沒有比其他人大兩倍。 核心思路 : 第一次遍歷 :找出最大值 largestNum 及其索引 largestIdx。 第二次遍歷 :檢查陣列中 每個非最大值的元素 ,是否滿足 largestNum >= 2 * n。只要有一個元素不滿足,就立刻返回 -1。 如果順利走完第二次都沒有被淘汰,說明最大值符合條件,回傳 largestIdx 。 Python Code class Solution : def dominantIndex ( self , nums : List[ int ]) -> int : largestNum = - 1 # 最大值 ...