https://leetcode.com/problems/merge-two-sorted-lists/description/
- 정렬되어 있는 두 연결 리스트를 합쳐라
풀이 1) 재귀 구조로 연결
- 병합 정렬에서 마지막 조합시 첫 번째 값부터 차례대로 비교하면 한 번에 해결되듯이, 이 또한 병합 정렬의 마지막 조합과 동일한 방식으로 첫 번째부터 비교하면서 리턴
- 먼저 list1과 list2의 값을 비교하여 작은 값이 있는 쪽을 재귀 호출로 엮은 다음 결과를 리턴
- 재귀 호출시 엮는 쪽은 그 다음 노드를 입력값으로 전달
- 어느 한쪽이 널(Null)이 된다면 널이 아닌 노드를 리턴하면서 마무리
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
//두 노드 중 한쪽이 널이면 널이 아닌 노드를 리턴
if(list1 == null) return list2;
if(list2 == null) return list1;
//l2가 더 크면 l1에 재귀 호출 결과를 엮고 l1를 리턴
if(list1.val < list2.val)
{
list1.next = mergeTwoLists(list1.next, list2);
return list1;
}
else
{
list2.next = mergeTwoLists(list1,list2.next);
return list2;
}
}
}
1밀리초
'Java > 알고리즘' 카테고리의 다른 글
[자바 알고리즘 인터뷰] 8장 연결 리스트 (4) - 두수의 덧셈 (0) | 2024.05.03 |
---|---|
[자바 알고리즘 인터뷰] 8장 연결 리스트(3) - 역순 연결 리스트 (0) | 2024.05.03 |
[자바 알고리즘 인터뷰] 8장 연결 리스트(1) 팰린드롬 연결 리스트 (0) | 2024.05.03 |
[자바 알고리즘 인터뷰] 7장 배열(6) - 주식을 사고팔기 가장 좋은 시점 (0) | 2024.05.01 |
[자바 알고리즘 인터뷰] 7장 배열(5) 자신을 제외한 배열의 곱 (0) | 2024.05.01 |