Skip to content

Commit b51fb0f

Browse files
committed
heap
1 parent 199dec6 commit b51fb0f

5 files changed

Lines changed: 68 additions & 0 deletions

File tree

study/graph/graph_bfs.queue.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
graph = []
12
def iterative_dfs(start_v):
23
discovered = [start_v]
34
queue = [start_v]

study/graph/graph_dfs_recursive.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
graph = []
12
def recursive_dfs(v, discovered=[]):
23
discovered.append(v)
34
for w in graph[v]:

study/graph/graph_dfs_stack.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
graph = []
12
def iterative_dfs(start_v):
23
discovored = []
34
stack = [start_v]

study/heap/BinaryHeap.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class BinaryHeap(object):
2+
def __init__(self):
3+
self.items = [None]
4+
5+
def __len__(self):
6+
return len(self.items) - 1
7+
8+
def _percolate_up(self):
9+
i = len(self)
10+
parent = i // 2
11+
while parent >= 0:
12+
if self.items[i] < self.items[parent]:
13+
self.items[parent], self.items[i] = \
14+
self.items[i], self.items[parent]
15+
i = parent
16+
parent = i//2
17+
18+
def insert(self, k):
19+
self.items.append(k)
20+
self._percolate_up()
21+
22+
def _percolalte_down(self, idx):
23+
left = idx * 2
24+
right = idx * 2 + 1
25+
smallest = idx
26+
27+
if left <= len(self) and self.items[left] < self.items[smallest]:
28+
smallest = left
29+
30+
if right <= len(self) and self.items[right] < self.items[smallest]:
31+
smallest = right
32+
33+
if smallest != idx:
34+
self.items[idx], self.items[smallest] = self.items[smallest], self.items[idx]
35+
self._percolalte_down(smallest)
36+
37+
def extract(self):
38+
extracted = self.items[1]
39+
self.items[1] = self.items[len(self)]
40+
self.items.pop()
41+
self._percolalte_down(1)
42+
return extracted

study/heap/leet215.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import heapq
2+
3+
class Solution:
4+
def findKthLargest(self, nums: List[int], k: int) -> int:
5+
heapq.heapify(nums)
6+
# heap = list()
7+
# for n in nums:
8+
# heapq.heappush(heap, -n)
9+
# heapq 모듈은 최소 힙만 지원하므로 음수로 저장한 다음 가장 낮은 수부터 추출
10+
11+
# for _ in range(k):
12+
# heapq.heappop(heap)
13+
for _ in range(len(nums)-k):
14+
heapq.heappop(nums)
15+
16+
# return -heapq.heappop(heap)
17+
return heapq.heappop(nums)
18+
19+
# nlargest 이용
20+
# return heapq.nlargest(k, nums)[-1]
21+
22+
# 정렬
23+
# return sorted(nums, reverse=True)[k-1]

0 commit comments

Comments
 (0)