Skip to content

Commit 9d263b7

Browse files
author
Your Name
committed
day 12
1 parent bf0af38 commit 9d263b7

File tree

2 files changed

+119
-0
lines changed

2 files changed

+119
-0
lines changed

146LRUCache.py

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
class linkedNode:
2+
def __init__(self, key = 0, val = 0):
3+
self.key = key
4+
self.val = val
5+
self.next = None
6+
self.prev = None
7+
class LRUCache(object):
8+
9+
def __init__(self, capacity):
10+
"""
11+
:type capacity: int
12+
"""
13+
self.capacity = capacity
14+
self.hashmap = dict()
15+
self.head = linkedNode(0, 0)
16+
self.tail = linkedNode(0, 0)
17+
self.head.next = self.tail
18+
self.tail.prev = self.head
19+
self.size = 0
20+
21+
22+
def get(self, key):
23+
"""
24+
:type key: int
25+
:rtype: int
26+
"""
27+
if key not in self.hashmap:
28+
return -1
29+
node = self.hashmap[key]
30+
prev = node.prev
31+
next = node.next
32+
33+
prev.next = next
34+
next.prev = prev
35+
self._insert(node)
36+
return node.val
37+
38+
def put(self, key, value):
39+
"""
40+
:type key: int
41+
:type value: int
42+
:rtype: None
43+
"""
44+
if self.size == self.capacity and key not in self.hashmap:
45+
# delete tail
46+
self._delete()
47+
if key not in self.hashmap:
48+
node = linkedNode(key, value)
49+
self.hashmap[key] = node
50+
self._insert(node)
51+
self.size += 1
52+
else:
53+
node = self.hashmap[key]
54+
node.val = value
55+
prev = node.prev
56+
next = node.next
57+
58+
prev.next = next
59+
next.prev = prev
60+
self._insert(node)
61+
return None
62+
63+
def _delete(self):
64+
# delete least visited element
65+
toDelete = self.tail.prev
66+
key = toDelete.key
67+
tmp = toDelete.prev
68+
tmp.next = self.tail
69+
self.tail.prev = tmp
70+
del self.hashmap[key]
71+
self.size -= 1
72+
73+
def _insert(self, node):
74+
tmp = self.head.next
75+
self.head.next = node
76+
node.next = tmp
77+
tmp.prev = node
78+
node.prev = self.head
79+
80+
# Your LRUCache object will be instantiated and called as such:
81+
# obj = LRUCache(capacity)
82+
# param_1 = obj.get(key)
83+
# obj.put(key,value)
84+
85+
lRUCache = LRUCache(2)
86+
print(lRUCache.get(2))
87+
print(lRUCache.put(2, 6))
88+
print(lRUCache.get(1))
89+
print(lRUCache.put(1, 5))
90+
print(lRUCache.put(1, 2))
91+
print(lRUCache.get(1))
92+
print(lRUCache.get(2))
93+
# [null,-1,null,-1,null,null,2,6]
94+

48RotateImage.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution(object):
2+
def rotate(self, matrix):
3+
"""
4+
:type matrix: List[List[int]]
5+
:rtype: None Do not return anything, modify matrix in-place instead.
6+
7+
"""
8+
# 1 2 3 4
9+
# 4 5 6 4
10+
# 7 8 9 4
11+
# 4 4 4 4
12+
# (0, 0) = (2, 0) (0, 2) = (0, 0) (2, 2) = (0, 2) (2, 0) = (2, 2)
13+
n = len(matrix)
14+
x = n // 2
15+
y = n - x
16+
for i in range(x):
17+
for j in range(y):
18+
matrix[i][j], matrix[j][~i], matrix[~i][~j], matrix[~j][i] = \
19+
matrix[~j][i], matrix[i][j], matrix[j][~i], matrix[~i][~j]
20+
return matrix
21+
22+
sol = Solution()
23+
res = sol.rotate([[0, 1], [2, 3]])
24+
print(res)
25+

0 commit comments

Comments
 (0)