Leetcode Java Merge In Between Linked Lists
업데이트:
문제
코드
/**
* 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 mergeInBetween(ListNode list1, int a, int b, ListNode list2) {
ListNode head = list1;
for (int i = 1; i < a; i++) {
head = head.next;
}
ListNode tail = head;
for (int i = a; i <= b; i++) {
tail = tail.next;
}
head.next = list2;
while (list2.next != null) {
list2 = list2.next;
}
list2.next = tail.next;
return list1;
}
}
결과
설명
-
list1 리스트노드에서 a번째 노드에서 b번째 노드까지 제거하고 그 사이에 list2 리스트노드를 이어주는 문제이다.
-
head에 list1을 넣고 1부터 a 미만일 때 까지 i를 증가시키며, haed에 head의 next 노드를 넣어 무시해야 할 위치에 해당하는 노드를 정해준다.
-
tail에 head를 넣고 a부터 b 이하일 때 까지 i를 증가시키며, tail에 tail의 next 노드를 넣어 무시해야 할 위치가 끝나는 노드의 위치에 해당하는 노드를 저장한다.
-
head의 next에 list2를 넣어 이어주고, list2의 마지막 위치의 next 노드에 tail의 next 노드를 넣고 list1을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기