题解 | #某云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();
}
#题解#