题解 | #某云SLB负载均衡#

某云SLB负载均衡

https://www.nowcoder.com/practice/067358deef2841dc8110ccfea928954b

队列和HashMap结合,格式没注意,大佬们将就着看🤣

🤣 public ArrayList<Integer> SLB (ArrayList<ArrayList<Integer>> operators) {
        // write code here
        ArrayList<Integer> res = new ArrayList<>();
        for (ArrayList<Integer> list : operators) {
            if (list.size() == 1) {
                int num = select();
                res.add(num);
            } else {
                if (list.get(0) == 1) {
                    add(list.get(1));
                } else if (list.get(0) == 2) {
                    delete(list.get(1));
                } else {
                    release(list.get(1));

                }
            }
        }
        return res;
    }
     class Node{
        int num;
        boolean aBoolean;
        public Node(){};
        public Node(int num,boolean b){
            this.num=num;
            this.aBoolean=b;
        }
    }
     Queue<Node> queue=new LinkedList<>();
     HashMap<Integer, Node> hashMap=new HashMap<>();
    private  void add(Integer integer) {
        Node node=hashMap.get(integer);
        if(node==null){
            Node node1=new Node(integer,true);
            queue.add(node1);
            hashMap.put(integer,node1);
        }

    }
    private  void delete(Integer integer) {
        Node node=hashMap.get(integer);
        if(node!=null){
            hashMap.remove(integer);
            queue.remove(node);
        }

    }
    private  void release(Integer integer) {
       Node node=hashMap.get(integer);
       if(node!=null){
           node.aBoolean=true;
       }


    }
    private  int select() {
       for (Node node:queue){
           if(node.aBoolean==true){
               node.aBoolean=false;
               return node.num;
           }
       }
       return hashMap.size();

    }

#题解#
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务