💻 Coding Problems Solving/Stack | Queue

[LeetCode] Add Two Numbers

Kim_dev 2023. 7. 14. 20:48

1. 문제 : https://leetcode.com/problems/reverse-linked-list/description/

 

2. 풀이

Stack에 하나씩 넣어서 역으로 꺼내오면서 next값 역으로 넣어주기

 

3. 코드

/**
 * 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; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        Stack<ListNode> stk = new Stack<>();
        ListNode now = head;
        ListNode answer;
        while(now != null){
            stk.add(now);
            if(now.next == null) break;
            now = now.next;
        }

        answer = now;

        while(!stk.isEmpty()){
            now = stk.pop();
            if(stk.isEmpty()){
                now.next = null;
                break;
            }
            now.next = stk.peek();
        }

        return answer;
    }
}