19. Remove Nth Node From End of List | Leetcode solution

 19Remove Nth Node From End of List

Given the head of a linked list, remove the nth node from the end of the list and return its head.

 

Example 1:

Input: head = [1,2,3,4,5], n = 2
Output: [1,2,3,5]

Example 2:

Input: head = [1], n = 1
Output: []

Example 3:

Input: head = [1,2], n = 1
Output: [1]

 

Constraints:

  • The number of nodes in the list is sz.
  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

solution :

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        
          ListNode *temp = head;
          ListNode *temp2 = head;
        int k = n;
         while(k--)
         {
             temp2 = temp2->next;
         }
        if(temp2 == NULL)
        {
            temp = temp ->next;
            return temp;
        }
        while(temp2->next != NULL)
        {
             temp = temp->next;
              temp2 = temp2 ->next;
        }
        ListNode* temp3 = temp->next;
        temp ->next = temp3 ->next;
        return head;
    }
};


Comments