Leetcode Java Swap Nodes in Pairs

업데이트:

문제

Link

코드

/**
 * 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 swapPairs(ListNode head) {
    if (head == null || head.next == null) {
      return head;
    }
    List<Integer> list = new ArrayList<>();
    while (head != null) {
      if (head.next == null) {
        list.add(head.val);
        head = head.next;
      } else {
        ListNode temp = head.next;
        list.add(temp.val);
        list.add(head.val);
        head = head.next.next;
      }
    }
    ListNode ln = null;
    for (int idx = list.size(); idx > 0; idx--) {
      ln = new ListNode(list.get(idx - 1), ln);
    }
    return ln;
  }

}

결과

Link

설명

  1. 주어진 ListNode head가 null이거나 head.next가 null인 경우, 위치를 변경할 ListNode가 없으므로 주어진 문제의 결과로 head를 반환한다.

  2. 반복을 통해 주어진 ListNode haed가 null이 될 때까지 val 값을 List에 모두 넣는다.
    • head.next가 null인 경우, 순서를 바꾸지 못하므로 head.val 값만 List에 넣는다.
    • head.next가 존재하는 경우, 순서를 바꿔주어야 하므로 head.next.val와 head.val값을 순서를 바꾸어 List에 넣는다.
  3. 반복이 완료되면 순서를 바꾸어준 List 기반으로 ListNode를 생성하여, 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기