Skip to content

Commit

Permalink
Merge pull request #1 from 149ps/main
Browse files Browse the repository at this point in the history
o(n) time and o(1) space using two pointers.
  • Loading branch information
149ps committed Apr 5, 2022
2 parents 2399591 + fc9edd4 commit 01cf981
Showing 1 changed file with 40 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
"""
You are given the head of a linked list, and an integer k.
Return the head of the linked list after swapping the values of the kth node from the beginning and the kth node from the end (the list is 1-indexed).
Example 1:
Input: head = [1,2,3,4,5], k = 2
Output: [1,4,3,2,5]
Example 2:
Input: head = [7,9,6,6,7,8,3,0,9,5], k = 5
Output: [7,9,6,6,8,7,3,0,9,5]
Constraints:
The number of nodes in the list is n.
1 <= k <= n <= 105
0 <= Node.val <= 100
"""
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def swapNodes(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
left,right = head,head
for _ in range(k-1):
right = right.next
r = right
while right.next:
left = left.next
right = right.next
r.val,left.val = left.val,r.val
return head

0 comments on commit 01cf981

Please sign in to comment.