반응형
문제 설명
- 문제: https://leetcode.com/problems/merge-nodes-in-between-zeros/
- 설명: 주어진 단일 연결 리스트에서 특정 조건에 따라 노드를 합치는 작업을 수행해야 합니다.
접근 방식
- 아이디어:
- 링크드리스트를 순회하면서 값이 0인지 확인합니다.
- 값이 0이 아니면 더해서 저장해둡니다.
- 값이 0인 노드를 찾으면, 지금까지 더한값을 가진 새로운 노드를 생성하고, 새로운 링크드리스트에 추가합니다.
- 알고리즘:
- 값이 0인 노드를 넣어둘 링크드리스트 resultNode를 생성합니다.
- 나중에 리턴하기위해 더미헤드를 생성하여 resultNode에 연결해놓습니다.
- 더한 값을 넣어둘 변수 addedVal을 생성합니다.
- 주어진 링크드리스트를 순회합니다.
- 노드의 값이 0이 아닌경우 값을 더합니다.
- 노드의 값이 0인 경우 지금까지 더한 값을 가진 새로운 노드를 생성하고, 이를 새로운 링크드리스트인 resultNode에 추가합니다.
- 더한 값을 넣어둔 변수 addedVal을 초기화 합니다.
- 더미헤드.next를 리턴합니다.
코드
class Solution {
public ListNode mergeNodes(ListNode head) {
ListNode temp = head.next;
ListNode dummyHead = new ListNode();
ListNode resultNode = dummyHead;
int addedVal = 0;
while(temp != null) {
addedVal += temp.val;
if(temp.val == 0) {
resultNode.next = new ListNode(addedVal);
resultNode = resultNode.next;
addedVal = 0;
}
temp = temp.next;
}
return dummyHead.next;
}
}
결론
- 시간 복잡도: 연결 리스트를 한 번 순회하는 O(n)의 시간 복잡도가 필요합니다.
- 공간 복잡도: 추가적인 공간을 거의 사용하지 않으므로 O(1)입니다.
반응형
'leetcode 문제 풀이' 카테고리의 다른 글
LeetCode 1598. Crawler Log Folder 자바 문제 풀이 (0) | 2024.07.12 |
---|---|
LeetCode 1823. Find the Winner of the Circular Game 자바 문제 풀이 (0) | 2024.07.09 |
LeetCode 1509. Minimum Difference Between Largest and Smallest Value in Three Moves 자바 문제 풀이 (0) | 2024.07.05 |
LeetCode 2319. Check if Matrix Is X-Matrix 자바 문제 풀이 (0) | 2024.07.04 |
LeetCode 350. Intersection of Two Arrays II 자바 문제 풀이 (0) | 2024.07.02 |