前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法练习(18) - 第一个唯一数字

算法练习(18) - 第一个唯一数字

作者头像
惊羽-布壳儿
发布2022-06-15 16:09:44
1480
发布2022-06-15 16:09:44
举报
文章被收录于专栏:惊羽-布壳儿

题目

给一个连续的数据流,写一个函数返回终止数字到达时,终止数字前面出现的第一个唯一数字即只出现一次的函数(包括终止数字),如果在终止数字前无唯一数字或者找不到这个终止数字, 返回 -1。

Input: ["FirstUnique","showFirstUnique","add","showFirstUnique","add","showFirstUnique","add","showFirst [[[2,3,5]],[],[5],[],[2],[],[3],[]] Output: [null,2,null,2,null,3,null,-1]

Explanation: FirstUnique firstUnique = new FirstUnique([2,3,5]); firstUnique.showFirstUnique(); // return 2 firstUnique.add(5); // the queue is now [2,3,5,5] firstUnique.showFirstUnique(); // return 2 firstUnique.add(2); // the queue is now [2,3,5,5,2] firstUnique.showFirstUnique(); // return 3 firstUnique.add(3); // the queue is now [2,3,5,5,2,3] firstUnique.showFirstUnique(); // return -1

题解

代码语言:javascript
复制
import java.util.HashMap;
import java.util.LinkedList;

public class FirstUnique {

    LinkedList<Integer> linkedList = new LinkedList<>();
    LinkedList<Integer> temp = new LinkedList<>();
    HashMap<Integer,Integer> hashMap = new HashMap<>();

    private int showFirstUnique() {
        while (linkedList.peek() != null){
            Integer pop = linkedList.pop();
            if(hashMap.get(pop) < 2){
                return pop;
            }
            temp.offer(pop);
        }
        LinkedList<Integer> t = temp;
        temp = linkedList;
        linkedList = t;
        return -1;
    }

    public static void main(String[] args) {

        FirstUnique firstUnique = new FirstUnique();
        firstUnique.add(2);
        firstUnique.add(3);
        firstUnique.add(5);
        System.out.println(firstUnique.showFirstUnique());
        firstUnique.add(2);
        System.out.println(firstUnique.showFirstUnique());
    }

    private void add(int i) {
        if(hashMap.get(i) != null){
            hashMap.put(i,hashMap.get(i)+1);
        }else{
            hashMap.put(i,1);
        }
        linkedList.offer(i);
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 题解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档