All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0201_0300.s0206_reverse_linked_list.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0201_0300.s0206_reverse_linked_list;

// #Easy #Top_100_Liked_Questions #Top_Interview_Questions #Linked_List #Recursion
// #Data_Structure_I_Day_8_Linked_List #Algorithm_I_Day_10_Recursion_Backtracking
// #Level_1_Day_3_Linked_List #Udemy_Linked_List #Big_O_Time_O(N)_Space_O(1)
// #2022_06_28_Time_0_ms_(100.00%)_Space_43.9_MB_(7.98%)

import com_github_leetcode.ListNode;

/*
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
/**
 * 206 - Reverse Linked List\.
 *
 * Easy
 *
 * Given the `head` of a singly linked list, reverse the list, and return _the reversed list_.
 *
 * **Example 1:**
 *
 * ![](https://assets.leetcode.com/uploads/2021/02/19/rev1ex1.jpg)
 *
 * **Input:** head = [1,2,3,4,5]
 *
 * **Output:** [5,4,3,2,1] 
 *
 * **Example 2:**
 *
 * ![](https://assets.leetcode.com/uploads/2021/02/19/rev1ex2.jpg)
 *
 * **Input:** head = [1,2]
 *
 * **Output:** [2,1] 
 *
 * **Example 3:**
 *
 * **Input:** head = []
 *
 * **Output:** [] 
 *
 * **Constraints:**
 *
 * *   The number of nodes in the list is the range `[0, 5000]`.
 * *   `-5000 <= Node.val <= 5000`
 *
 * **Follow up:** A linked list can be reversed either iteratively or recursively. Could you implement both?
**/
public class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode prev = null;
        ListNode curr = head;
        while (curr != null) {
            ListNode next = curr.next;
            curr.next = prev;
            prev = curr;
            curr = next;
        }
        return prev;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy