日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 1429. 第一个唯一数字(map+queue)

發布時間:2024/7/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 1429. 第一个唯一数字(map+queue) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

給定一系列整數,插入一個隊列中,找出隊列中第一個唯一整數。

實現 FirstUnique 類:

  • FirstUnique(int[] nums) 用數組里的數字初始化隊列。
  • int showFirstUnique() 返回隊列中的 第一個唯一 整數的值。如果沒有唯一整數,返回 -1。(譯者注:此方法不移除隊列中的任何元素)
  • void add(int value) 將 value 插入隊列中。
示例 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(); // 返回 2 firstUnique.add(5); // 此時隊列為 [2,3,5,5] firstUnique.showFirstUnique(); // 返回 2 firstUnique.add(2); // 此時隊列為 [2,3,5,5,2] firstUnique.showFirstUnique(); // 返回 3 firstUnique.add(3); // 此時隊列為 [2,3,5,5,2,3] firstUnique.showFirstUnique(); // 返回 -1示例 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(); // 返回 -1 firstUnique.add(7); // 此時隊列為 [7,7,7,7,7,7,7] firstUnique.add(3); // 此時隊列為 [7,7,7,7,7,7,7,3] firstUnique.add(3); // 此時隊列為 [7,7,7,7,7,7,7,3,3] firstUnique.add(7); // 此時隊列為 [7,7,7,7,7,7,7,3,3,7] firstUnique.add(17); // 此時隊列為 [7,7,7,7,7,7,7,3,3,7,17] firstUnique.showFirstUnique(); // 返回 17示例 3: 輸入: ["FirstUnique","showFirstUnique","add","showFirstUnique"] [[[809]],[],[809],[]] 輸出: [null,809,null,-1] 解釋: FirstUnique firstUnique = new FirstUnique([809]); firstUnique.showFirstUnique(); // 返回 809 firstUnique.add(809); // 此時隊列為 [809,809] firstUnique.showFirstUnique(); // 返回 -1提示: 1 <= nums.length <= 10^5 1 <= nums[i] <= 10^8 1 <= value <= 10^8 最多調用 5000 次 showFirstUnique 和 add 。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/first-unique-number
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

  • map 計數,隊列中計數 > 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/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode 1429. 第一个唯一数字(map+queue)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。