給定乙個大小為 n 的整數陣列,找出其中所有出現超過 ⌊ n/3 ⌋ 次的元素。
高階:嘗試設計時間複雜度為 o(n)、空間複雜度為 o(1)的演算法解決此問題。
示例 1:
輸入:[3,2,3]
輸出:[3]
示例 2:
輸入:nums = [1]
輸出:[1]
示例 3:
輸入:[1,1,1,3,3,2,2,2]
輸出:[1,2]
1 <= nums.length <= 5 * 104
-109 <= nums[i] <= 109
解題思路:本題採用雜湊表的思想解題,利用字典記錄每乙個元素出現的字數。首先建立字典,然後遍歷輸入列表,若當前元素已經在列表中,則將對應value加1,若未出現,則新增進去,value初值設為1。遍歷完成後得到雜湊字典。然後遍歷字典,將value值大於 ⌊ n/3 ⌋的key新增進儲存結果的列表中,最後返回結果列表。**如下:
class
solution
:def
majorityelement
(self, nums: list[
int])-
> list[
int]
: dic =
res =
for i in nums:
if i in dic:
dic[i]+=1
else
: dic[i]=1
t =len(nums)//3
for key in dic.keys():
if dic[key]
> t:
return res
提交後,通過。 Leetcode解題思路
所有簡單題的解題思路。question count the number of prime numbers less than a non negative number,n example input 10output 4explanation there are 4 prime numbers ...
leetcode 95 96 解題思路
95.unique binary search trees ii given an integer n,generate all structurally uniquebst s binary search trees that store values 1 n.example input 3out...
leetcode 160解題思路
題意 求兩個單向鍊錶的交點。要求時間複雜度為o n 空間複雜度為o 1 答案如下 include include using namespace std definition for singly linked list.struct listnode 方法一 unordered map,時間複雜度...