feat(528-swapping-nodes-in-a-ll): add py3 optimal solution
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
# Time: O(N)
|
||||
# Space: O(1)
|
||||
class Solution:
|
||||
def swapNodes(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
|
||||
# We are using two pointer approach here
|
||||
kth_node = kth_end_node = None
|
||||
|
||||
n = 1
|
||||
ptr = head
|
||||
while ptr != None:
|
||||
if n == k:
|
||||
kth_node = ptr
|
||||
|
||||
# `kth_end_node` ptr will only start moving once
|
||||
# we've traversed k nodes from the beginning of the
|
||||
# linked list
|
||||
if n >= k:
|
||||
kth_end_node = head if kth_end_node is None else kth_end_node.next
|
||||
|
||||
n += 1
|
||||
ptr = ptr.next
|
||||
|
||||
kth_node.val, kth_end_node.val = kth_end_node.val, kth_node.val
|
||||
|
||||
return head
|
||||
|
||||
Reference in New Issue
Block a user