def sort_from_pivot(linked_list, k): small_list = None large_list = None first_value = linked_list.get(0).val if first_value < k: small_list = Node(first_value) else: large_list = Node(first_value) for i in range(1, linked_list.getLength()): value = linked_list.get(i).val if value < k: if small_list == None: small_list = Node(value) else: small_list.add(value) else: if large_list == None: large_list = Node(value) else: large_list.add(value) concat(small_list, large_list) return small_list
def reverseBetween(head: Node, m: int, n: int) -> Node: # except if not head or m == n: return head root = st = Node(None) root.next = head # st, end 지정 for _ in range(m - 1): st = st.next end = st.next # important!! for _ in range(n - m): tmp, st.next, end.next = st.next, end.next, end.next.next st.next.next = tmp return root.next linkedlist = Node(1) linkedlist.add(Node(2)) linkedlist.add(Node(3)) linkedlist.add(Node(4)) linkedlist.add(Node(5)) linkedlist.add(Node(None)) linkedlist.prt() sol = reverseBetween(linkedlist, 2, 4) sol.prt()
if lists[i]: heapq.heappush(heap, (lists[i].data, i + 500, lists[i])) print("heap: ", heap) while heap: node = heapq.heappop(heap) idx = node[1] result.next = node[2] result = result.next if result.next: heapq.heappush(heap, (result.next.data, idx, result.next)) print(result) return root.next # linkedlist.add(Node(2)) l1 = Node(1) l1.add(Node(4)) l1.add(Node(5)) l1.prt() l2 = Node(1) l2.next = Node(3) l2.next.next = Node(4) l2.prt() l3 = Node(2) l3.next = Node(6) sol = Solution().mergeKLists([l1, l2, l3]) sol.prt()
else: small_list.add(value) else: if large_list == None: large_list = Node(value) else: large_list.add(value) concat(small_list, large_list) return small_list def concat(linkedList1, linkedList2): last_node_linkedList1 = linkedList1.get(linkedList1.getLength() - 1) first_node_linkedList2 = linkedList2.get(0) last_node_linkedList1.nex = first_node_linkedList2 last_node_linkedList1.nex.prev = last_node_linkedList1 linkedList = Node(5) linkedList.add(1) linkedList.add(8) linkedList.add(0) linkedList.add(3) linkedList.add(7) linkedList.add(2) linkedList.add(9) print_linked_list(linkedList) pivot = 7 sorted_linkedList = sort_from_pivot(linkedList, pivot) print_linked_list(sorted_linkedList)
# 24. swap nodes in pairs # 연결 리스트를 입력받아 페어 단위로 스왑. from LinkedList import Node def swapPairs(head: Node) -> Node: cur = head while cur and cur.next: # 값만 교환 cur.data, cur.next.data = cur.next.data, cur.data cur = cur.next.next return head linkedlist = Node(1) linkedlist.add(Node(2)) linkedlist.add(Node(3)) linkedlist.add(Node(4)) linkedlist.add(Node(5)) linkedlist.add(Node(6)) sol = swapPairs(linkedlist) sol.prt()