Skip to content

Commit a2ab472

Browse files
committed
update
1 parent 28af686 commit a2ab472

File tree

2 files changed

+110
-0
lines changed

2 files changed

+110
-0
lines changed

LeetCodeSolutions/146.py

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#==================================================
2+
#==> Title:
3+
#==> Author: Zhang zhen
4+
#==> Email: hustmatnoble.gmail.com
5+
#==> GitHub: https://github.com/MatNoble
6+
#==> Date:
7+
#==================================================
8+
9+
10+
class ListNode:
11+
def __init__(self, key=None, value=None):
12+
self.key = key
13+
self.val = value
14+
self.prev = None
15+
self.next = None
16+
17+
class LRUCache:
18+
19+
def __init__(self, capacity: int):
20+
self.capacity = capacity
21+
self.hashMap = {}
22+
self.head = ListNode()
23+
self.tail = ListNode()
24+
self.head.next = self.tail
25+
self.tail.prev = self.head
26+
27+
28+
def move_node_to_tail(self, key):
29+
node = self.hashMap[key]
30+
# 断
31+
# prev -- x -- > node <-- x -- next
32+
node.prev.next = node.next
33+
node.next.prev = node.prev
34+
# 连
35+
# prev <-- node --> tail
36+
node.next = self.tail
37+
node.prev = self.tail.prev
38+
# prev --> node <-- tail
39+
node.prev.next = node
40+
self.tail.prev = node
41+
42+
43+
def get(self, key: int) -> int:
44+
if key in self.hashMap:
45+
self.move_node_to_tail(key)
46+
return self.hashMap[key].val
47+
return -1
48+
49+
50+
def put(self, key: int, value: int) -> None:
51+
if key in self.hashMap:
52+
self.hashMap[key].val = value
53+
self.move_node_to_tail(key)
54+
else:
55+
if len(self.hashMap) == self.capacity:
56+
self.hashMap.pop(self.head.next.key)
57+
self.head.next = self.head.next.next
58+
self.head.next.prev = self.head
59+
new = ListNode(key, value)
60+
self.hashMap[key] = new
61+
# prev <-- new --> tail
62+
new.prev = self.tail.prev
63+
new.next = self.tail
64+
# prev --> new <-- tail
65+
new.prev.next = new
66+
self.tail.prev = new
67+
68+
69+
70+
# Your LRUCache object will be instantiated and called as such:
71+
# obj = LRUCache(capacity)
72+
# param_1 = obj.get(key)
73+
# obj.put(key,value)

LeetCodeSolutions/209.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#==================================================
2+
#==> Title: 209. 长度最小的子数组
3+
#==> Author: Zhang zhen
4+
#==> Email: hustmatnoble.gmail.com
5+
#==> GitHub: https://github.com/MatNoble
6+
#==> Date: 2/9/2021
7+
#==================================================
8+
9+
"""
10+
https://leetcode-cn.com/problems/minimum-size-subarray-sum/
11+
"""
12+
13+
from typing import List
14+
class Solution:
15+
def minSubArrayLen(self, target: int, nums: List[int]) -> int:
16+
i = j = 0
17+
n = len(nums)
18+
res = n+1
19+
sum_ = 0
20+
flag = 0
21+
while j < n:
22+
while j < n and sum_ < target:
23+
sum_ += nums[j]
24+
j += 1
25+
while sum_ >= target:
26+
res = min(res, j-i)
27+
sum_ -= nums[i]
28+
i += 1
29+
return res if res!=n+1 else 0
30+
31+
mat = Solution()
32+
target = 7
33+
nums = [7,2,3,1,2,4,3]
34+
35+
# target = 11
36+
# nums = [1,1,1,1,1,1,1,1]
37+
mat.minSubArrayLen(target, nums)

0 commit comments

Comments
 (0)