반응형
https://leetcode.com/problems/swap-nodes-in-pairs/
1. 2022.02.05 시도
소요시간: 10분
class Solution {
public ListNode swapPairs(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode prev = new ListNode();
ListNode ret = prev;
prev.next = head;
while (prev.next != null && prev.next.next != null) {
ListNode temp = head.next;
head.next = temp.next;
temp.next = head;
prev.next = temp;
prev = head;
head = head.next;
}
return ret.next;
}
}
풀이 접근 과정
먼저 head의 null처리를 진행하였다.
우선 현재노드에서 다음다음 노드를 이어주고 그다음에 다음 노드를 현재노드로 이어주고 이전노드를 다음노드와 이어주면 되겠다는 생각이 들었다. 우선 temp를 먼저 지정해서 연결을 지었고 그다음 prev노드를 만들어서 연결했다. 그리고 마지막 결과 리턴을 위해 ret를 만들어서 완성했다.
느낀점
- 노드 문제는 정신만 딱 차리면 된다. 그리고 그림에서 연상해서 하는게 확실히 쉽게 풀린다.
- 재귀로도 쉽게 풀 수 있다.
class Solution {
public ListNode swapPairs(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode first = head;
ListNode second = head.next;
first.next = swapPairs(second.next);
second.next = first;
return second;
}
}
알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)
반응형
'알고리즘 풀이' 카테고리의 다른 글
.leetcode(86. Partition List) (0) | 2022.02.06 |
---|---|
.leetcode(513. Find Bottom Left Tree Value) (0) | 2022.02.06 |
.leetcode(846. Hand of Straights) (0) | 2022.02.05 |
.leetcode(814. Binary Tree Pruning) (0) | 2022.02.05 |
.leetcode(515. Find Largest Value in Each Tree Row) (0) | 2022.01.30 |