Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d8abf3e

Browse files
committed
add solution 146 [Solution.java]
1 parent b669342 commit d8abf3e

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

‎solution/146.Lru Cache/Solution.java‎

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,44 +5,44 @@ class Node{
55
public Node pre;//指向前面的指针
66
public Node next;//指向后面的指针
77
public Node(int key,int value){
8-
this.val=value;
9-
this.key=key;
8+
this.val = value;
9+
this.key = key;
1010
}
1111
}
1212
class LRUCache {
1313
int capacity;//容量
1414
Node head;//双向链表的头,维护这个指针,因为set,get时需要在头部操作
1515
Node end;//双向链表的尾,set时,要是满了,需要将链表的最后一个节点remove
16-
HashMap<Integer,Node> map=new HashMap<Integer,Node>();//hash表
16+
HashMap<Integer,Node> map = new HashMap<Integer,Node>();//hash表
1717
public LRUCache(int capacity) {
18-
this.capacity=capacity;
18+
this.capacity = capacity;
1919
}
2020
//添加,删除尾部,插入头部的操作
2121
public void remove(Node node){
22-
Node cur=node;
23-
Node pre=node.pre;
24-
Node post=node.next;
25-
if(pre==null){//说明cur是头部节点
26-
head=post;
22+
Node cur = node;
23+
Node pre = node.pre;
24+
Node post = node.next;
25+
if(pre == null){//说明cur是头部节点
26+
head = post;
2727
}
28-
else pre.next=post;//更新指针,删除
29-
if(post==null){//说明cur是最后的节点
30-
end=pre;
28+
else pre.next = post;//更新指针,删除
29+
if(post == null){//说明cur是最后的节点
30+
end = pre;
3131
}
32-
else post.pre=pre;
32+
else post.pre = pre;
3333
}
3434
public void setHead(Node node){
3535
//直接插入
36-
node.next=head;
37-
node.pre=null;
38-
if(head!=null) head.pre=node;//防止第一次插入时为空
39-
head=node;
40-
if(end==null) end=node;
36+
node.next = head;
37+
node.pre = null;
38+
if(head != null) head.pre = node;//防止第一次插入时为空
39+
head = node;
40+
if(end==null) end = node;
4141
}
4242
public int get(int key) {
4343
if(map.containsKey(key)){
4444
//需要把对应的节点调整到头部
45-
Node latest=map.get(key);
45+
Node latest = map.get(key);
4646
remove(latest);
4747
setHead(latest);
4848
//返回value
@@ -54,18 +54,18 @@ public int get(int key) {
5454
public void put(int key, int value) {
5555
if(map.containsKey(key)){//这个key原来存在
5656
//只需要把key对应的node提到最前面,更新value
57-
Node oldNode=map.get(key);
58-
oldNode.val=value;
57+
Node oldNode = map.get(key);
58+
oldNode.val = value;
5959
remove(oldNode);
6060
setHead(oldNode);
6161
}
6262
else{
6363
//这个key原来不存在,需要重新new出来
64-
Node newNode=new Node(key,value);
64+
Node newNode = new Node(key,value);
6565
//接下来要考虑容量
66-
if(map.size()<capacity){
66+
if(map.size() < capacity){
6767
setHead(newNode);
68-
map.put(key,newNode);
68+
map.put(key,newNode);
6969
}
7070
else{
7171
//容量不够,需要先将map中,最不常使用的那个删除了删除
@@ -74,7 +74,7 @@ public void put(int key, int value) {
7474
remove(end);
7575
setHead(newNode);
7676
//放入新的
77-
map.put(key,newNode);
77+
map.put(key,newNode);
7878
}
7979
}
8080
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /