Skip to content

Latest commit

 

History

History
65 lines (48 loc) · 1.33 KB

_1721. Swapping Nodes in a Linked List.md

File metadata and controls

65 lines (48 loc) · 1.33 KB

All prompts are owned by LeetCode. To view the prompt, click the title link above.

Back to top


First completed : June 07, 2024

Last updated : July 01, 2024


Related Topics : Linked List, Two Pointers

Acceptance Rate : 68.002 %


Solutions

C

/* Took 3:05 total -- first attempt was in C and was quick despite that hehe
 * 97.79% runtime
 * 95.59% memory :D
 */

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* swapNodes(struct ListNode* head, int k) {
    struct ListNode* left = head;

    for (int i = 1; i < k; i++) {
        left = left->next;
    }

    struct ListNode* rightSlow = head;
    struct ListNode* rightFast = head;

    for (int i = 0; i < k; i++) {
        rightFast = rightFast->next;
    }

    while (rightFast) {
        rightFast = rightFast->next;
        rightSlow = rightSlow->next;
    }

    int tempVal = left->val;
    left->val = rightSlow->val;
    rightSlow->val = tempVal;

    return head;
}