Algorithm/LeetCode
21. Merge Two Sorted Lists
lartist
2020. 1. 13. 11:04
https://leetcode.com/problems/merge-two-sorted-lists/
Merge Two Sorted Lists - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
난이도: Easy
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. |
정렬된 두 linked list를 오름차순으로 병합하는 문제.
두 list를 앞에서부터 탐색하며 작은 요소를 병합 list에 추가하면 된다.
원래 list를 살리려고 병합된 리스트에서 새로 객체를 만들어가면서 작성했다.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null) {
return l2;
} else if (l2 == null) {
return l1;
}
ListNode merged = new ListNode(-1);
ListNode lastOfMerged = merged;
ListNode smallerNode = l1;
ListNode biggerNode = l2;
while (smallerNode != null && biggerNode != null) {
if (biggerNode.val < smallerNode.val) {
ListNode temp = smallerNode;
smallerNode = biggerNode;
biggerNode = temp;
}
lastOfMerged.next = new ListNode(smallerNode.val);
lastOfMerged = lastOfMerged.next;
smallerNode = smallerNode.next;
if (smallerNode == null) {
while (biggerNode != null) {
lastOfMerged.next = new ListNode(biggerNode.val);
lastOfMerged = lastOfMerged.next;
biggerNode = biggerNode.next;
}
break;
}
}
return merged.next;
}
}