這是一個簡單的問題,說明如下:
給定一個大小為 n 的陣列 nums,傳回多數元素。
多數元素是出現超過 ⌊n/2⌋ 次的元素。您可以假設多數元素始終存在於陣列中。
範例1:
輸入:nums = [3,2,3]
輸出:3範例2:
輸入:nums = [2,2,1,1,1,2,2]
輸出:2約束:
n == nums.length
1 -109
乍一看,您會考慮製作一張地圖,然後收集顯示最多的地圖。
再想一想,如果你可以排序並找到出現最多的那個就可以了。
還有一個更簡單的方法。如果您仔細閱讀說明,您會明白多數元素是出現在陣列中超過一半的元素。
考慮到這一點,如果你對其進行排序並獲取中間的索引,那就可以解決問題:
class Solution { public int majorityElement(int[] nums) { // sort Arrays.sort(nums); // if by majority element it means that appears more than half of nums size // then picking the middle element would be the one that's a majority element return nums[nums.length / 2]; } }
運行時間:4 ms,比 Java 線上提交的多數元素的 54.53% 快。
記憶體使用:53.5 MB,少於 Java 線上提交的多數元素的 9.23%。
—
就是這樣!如果還有什麼要討論的,請隨時發表評論,如果我錯過了任何內容,請告訴我,以便我進行相應更新。
直到下一篇文章! :)
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3