生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1429. 第一个唯一数字(map+queue)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
1. 題目
給定一系列整數(shù),插入一個(gè)隊(duì)列中,找出隊(duì)列中第一個(gè)唯一整數(shù)。
實(shí)現(xiàn) FirstUnique 類:
- FirstUnique(int[] nums) 用數(shù)組里的數(shù)字初始化隊(duì)列。
- int showFirstUnique() 返回隊(duì)列中的 第一個(gè)唯一 整數(shù)的值。如果沒(méi)有唯一整數(shù),返回 -1。(譯者注:此方法不移除隊(duì)列中的任何元素)
- void add(int value) 將 value 插入隊(duì)列中。
示例
1:
輸入:
["FirstUnique","showFirstUnique","add","showFirstUnique","add","showFirstUnique","add","showFirstUnique"]
[[[2,3,5]],[],[5],[],[2],[],[3],[]]
輸出:
[null
,2,null
,2,null
,3,null
,-1]
解釋:
FirstUnique firstUnique
= new FirstUnique([2,3,5]);
firstUnique
.showFirstUnique();
firstUnique
.add(5);
firstUnique
.showFirstUnique();
firstUnique
.add(2);
firstUnique
.showFirstUnique();
firstUnique
.add(3);
firstUnique
.showFirstUnique(); 示例
2:
輸入:
["FirstUnique","showFirstUnique","add","add","add","add","add","showFirstUnique"]
[[[7,7,7,7,7,7]],[],[7],[3],[3],[7],[17],[]]
輸出:
[null
,-1,null
,null
,null
,null
,null
,17]
解釋:
FirstUnique firstUnique
= new FirstUnique([7,7,7,7,7,7]);
firstUnique
.showFirstUnique();
firstUnique
.add(7);
firstUnique
.add(3);
firstUnique
.add(3);
firstUnique
.add(7);
firstUnique
.add(17);
firstUnique
.showFirstUnique(); 示例
3:
輸入:
["FirstUnique","showFirstUnique","add","showFirstUnique"]
[[[809]],[],[809],[]]
輸出:
[null
,809,null
,-1]
解釋:
FirstUnique firstUnique
= new FirstUnique([809]);
firstUnique
.showFirstUnique();
firstUnique
.add(809);
firstUnique
.showFirstUnique(); 提示:
1 <= nums
.length
<= 10^5
1 <= nums
[i
] <= 10^8
1 <= value
<= 10^8
最多調(diào)用
5000 次 showFirstUnique 和 add 。
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/first-unique-number
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
2. 解題
- map 計(jì)數(shù),隊(duì)列中計(jì)數(shù) > 1的元素 pop
class FirstUnique {unordered_map
<int,int> map
;queue
<int> q
;
public:FirstUnique(vector
<int>& nums
) {for(int n
: nums
){q
.push(n
);map
[n
]++;}}int showFirstUnique() {while(!q
.empty() && map
[q
.front()] >1)q
.pop();if(q
.empty()) return -1;return q
.front();}void add(int value
) {q
.push(value
);map
[value
]++;}
};
672 ms 121.5 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長(zhǎng)按或掃碼關(guān)注我的公眾號(hào)(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 1429. 第一个唯一数字(map+queue)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。