feat(528-swapping-nodes-in-a-ll): add py3 solution

This commit is contained in:
Sangeeth Sudheer 2022-04-04 22:31:58 +05:30
parent da5d790d16
commit 2c0614e7df
3 changed files with 40 additions and 0 deletions

View File

@ -0,0 +1,23 @@
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:**
![](https://assets.leetcode.com/uploads/2020/09/21/linked1.jpg)
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`

View File

@ -0,0 +1,17 @@
# NOTE: Not the best approach, since we use O(N) space
# Time: O(N)
class Solution:
def swapNodes(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
# Figure out length of LL and cache nodes by the index
length = 0
cache = {}
ptr = head
while ptr != None:
cache[length] = ptr
length += 1
ptr = ptr.next
cache[k - 1].val, cache[length - k].val = cache[length - k].val, cache[k - 1].val
return head