반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- LeetCode Remove Duplicates from Sorted List in c
- 이분 탐색
- 브루트포스 알고리즘
- 다이나믹 프로그래밍
- 연결리스트 중복제거
- 문자열
- 큐
- LeetCode 83 c언어
- 스택
- 자료 구조
- 큰 수 연산
- 연결리스트 정렬
- 프로그래머스
- 구현
- KMP알고리즘
- 별 찍기
- 임의 정밀도 / 큰 수 연산
- 문자열제곱
- 실패함수
- 해시를 사용한 집합과 맵
- 유클리드 호제법
- 수학
- Queue
- LeetCode 83번
- 재귀
- 정렬
- 조합론
- 정수론
- 사칙연산
- 시뮬레이션
Archives
- Today
- Total
hahn
[LeetCode - C] 83. Remove Duplicates from Sorted List 본문
코딩테스트 연습/LeetCode(C - Easy)
[LeetCode - C] 83. Remove Duplicates from Sorted List
hahn 2022. 4. 18. 05:31728x90
반응형
Given the head of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well.
Example 1:
Input: head = [1,1,2]
Output: [1,2]
Example 2:
Input: head = [1,1,2,3,3]
Output: [1,2,3]
Constraints:
- The number of nodes in the list is in the range [0, 300].
- -100 <= Node.val <= 100
- The list is guaranteed to be sorted in ascending order.
Solution 1
linked list 다루는 문제다.
현재 노드와 다른 값을 가진 노드를 찾은 뒤 이어주면 된다.
malloc된 노드면 free 해줘야 하나 그런 말 없어서 그냥 진행했다.
null일 때 예외 처리했다.
struct ListNode* deleteDuplicates(struct ListNode* head)
{
struct ListNode *next_node;
struct ListNode *current_node;
if (!head)
return (head);
current_node = head;
next_node = current_node -> next;
while (current_node -> next)
{
while (next_node && next_node -> val == current_node -> val)
next_node = next_node -> next;
current_node -> next = next_node;
current_node = current_node -> next;
if (!current_node)
break;
next_node = current_node -> next;
}
return (head);
}
Solution 2
좀 더 깔끔한 ver
struct ListNode* deleteDuplicates(struct ListNode* head)
{
struct ListNode *current_node;
current_node = head;
while (current_node && current_node -> next)
{
if (current_node -> val == current_node -> next -> val)
current_node -> next = current_node -> next -> next;
else
current_node = current_node -> next;
}
return (head);
}
728x90
반응형
'코딩테스트 연습 > LeetCode(C - Easy)' 카테고리의 다른 글
[LeetCode - C] 70. Climbing Stairs (0) | 2022.04.18 |
---|---|
[LeetCode - C] 69. Sqrt(x) (0) | 2022.04.18 |
[LeetCode - C] 67. Add Binary (0) | 2022.04.18 |
[LeetCode - C] 66. Plus One (0) | 2022.04.16 |
[LeetCode - C] 58. Length of Last Word (0) | 2022.04.12 |