list1과 list2로 정렬된 두 개의 링크드리스트의 헤드가 주어집니다.
두 리스트를 하나의 정렬된 리스트에 병합합니다. 리스트는 처음 두 목록의 노드를 연결하여 만들어야 합니다.
병합된 링크드리스트의 헤드를 반환합니다.
https://leetcode.com/problems/merge-two-sorted-lists/
You are given the heads of two sorted linked lists list1 and list2.
Merge the two lists in a one sorted list. The list should be made by splicing together the nodes of the first two lists.
Return the head of the merged linked list.
Example 1:
Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]
Example 2:
Input: list1 = [], list2 = []
Output: []
Example 3:
Input: list1 = [], list2 = [0]
Output: [0]
자바입니다.
/**
* 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 mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null) return l2;
if(l2==null) return l1;
ListNode newHead = new ListNode(0);
ListNode move=newHead;
while(l1!=null&&l2!=null){
if(l1.val>l2.val){
move.next=l2;
l2=l2.next;
}else{
move.next=l1;
l1=l1.next;
}
move=move.next;
}
if(l1!=null){
move.next=l1;
}
if(l2!=null){
move.next=l2;
}
return newHead.next;
}
}
슬슬 재귀함수를 사용해서 푸는 문제가 나오고 있다. 재귀 이해가 안 간다. 조만간 공부해서 재귀를 사용해서 풀어 봐야겠다.