add
This commit is contained in:
parent
29a5277cf7
commit
5d30d38821
113
5.leetcode/src/com/fanxb/common/Q146.java
Normal file
113
5.leetcode/src/com/fanxb/common/Q146.java
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
package com.fanxb.common;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author fanxb
|
||||||
|
* @date 2021-09-17-下午11:13
|
||||||
|
*/
|
||||||
|
public class Q146 {
|
||||||
|
private Map<Integer, Node> map;
|
||||||
|
|
||||||
|
private int count;
|
||||||
|
private int size;
|
||||||
|
private Node head;
|
||||||
|
private Node end;
|
||||||
|
|
||||||
|
private static class Node {
|
||||||
|
private int key;
|
||||||
|
private int value;
|
||||||
|
private Node next;
|
||||||
|
private Node last;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Q146(int capacity) {
|
||||||
|
map = new HashMap<>(capacity);
|
||||||
|
count = 0;
|
||||||
|
size = capacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int get(int key) {
|
||||||
|
if (count == 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
Node node = map.get(key);
|
||||||
|
if (node == null) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
moveEndToHead(node);
|
||||||
|
return node.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void moveEndToHead(Node node) {
|
||||||
|
if (node.last != null) {
|
||||||
|
//说明非队首元素
|
||||||
|
node.last.next = node.next;
|
||||||
|
if (node.next != null) {
|
||||||
|
//说明非队尾元素
|
||||||
|
node.next.last = node.last;
|
||||||
|
} else {
|
||||||
|
//说明当前元素为队尾元素,需要修改end
|
||||||
|
end = node.last;
|
||||||
|
}
|
||||||
|
//将node转移到队列头
|
||||||
|
node.last = null;
|
||||||
|
node.next = head;
|
||||||
|
head.last = node;
|
||||||
|
head = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void put(int key, int value) {
|
||||||
|
Node node = map.get(key);
|
||||||
|
if (node != null) {
|
||||||
|
node.value = value;
|
||||||
|
//同时把node移动到首位
|
||||||
|
moveEndToHead(node);
|
||||||
|
} else {
|
||||||
|
if (count == size) {
|
||||||
|
//说明需要排除队尾的元素
|
||||||
|
map.remove(end.key);
|
||||||
|
if (size == 1) {
|
||||||
|
head = null;
|
||||||
|
end = null;
|
||||||
|
} else {
|
||||||
|
end = end.last;
|
||||||
|
end.next = null;
|
||||||
|
}
|
||||||
|
count--;
|
||||||
|
}
|
||||||
|
node = new Node();
|
||||||
|
node.key = key;
|
||||||
|
node.value = value;
|
||||||
|
if (head != null) {
|
||||||
|
head.last = node;
|
||||||
|
node.next = head;
|
||||||
|
} else {
|
||||||
|
end = node;
|
||||||
|
}
|
||||||
|
head = node;
|
||||||
|
count++;
|
||||||
|
map.put(key, node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Q146 q146 = new Q146(2);
|
||||||
|
q146.put(2, 1);
|
||||||
|
q146.put(1, 1);
|
||||||
|
q146.put(2, 3);
|
||||||
|
q146.put(4, 1);
|
||||||
|
System.out.println(q146.get(1));
|
||||||
|
System.out.println(q146.get(2));
|
||||||
|
// q146.put(3, 2);
|
||||||
|
// System.out.println(q146.get(2));
|
||||||
|
// System.out.println(q146.get(3));
|
||||||
|
// q146.put(4, 4);
|
||||||
|
// System.out.println(q146.get(1));
|
||||||
|
// System.out.println(q146.get(3));
|
||||||
|
// System.out.println(q146.get(4));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
12
5.leetcode/src/com/fanxb/common/Q326.java
Normal file
12
5.leetcode/src/com/fanxb/common/Q326.java
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package com.fanxb.common;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author fanxb
|
||||||
|
* @date 2021-09-23-上午11:27
|
||||||
|
*/
|
||||||
|
public class Q326 {
|
||||||
|
|
||||||
|
public boolean isPowerOfThree(int n) {
|
||||||
|
return n > 0 && 1162261467 % n == 0;
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user