19. Remove Nth Node From End of List
난이도: Easy
https://leetcode.com/problems/remove-nth-node-from-end-of-list/
Language: C++
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode* node = head;
int length = 0;
while (node) {
length++;
node = node->next;
}
length = length - n;
if (length < 0)
return NULL;
else {
node = head;
while (length > 1) {
node = node->next;
length--;
}
if (length == 0)
head = head->next;
else
node->next = node->next->next;
}
return head;
}
};
야호
아마도 지금 푼 것 중에서 처음으로 내가 혼자 다 풀었다.. (난이도 Easy...)
솔루션은 dummy라고 dummy.next = head 를 넣어서 while (length > 0) 하고, node->next = node->next->next; 만 쓰도록 하여 간소화 시켰다.
728x90
반응형
'자료구조 알고리즘 > 코딩테스트' 카테고리의 다른 글
Remove Linked List Elements (0) | 2021.07.06 |
---|---|
Reverse Linked List (0) | 2021.07.04 |
Intersection of Two Linked Lists (0) | 2021.07.03 |
Linked List Cycle II (0) | 2021.07.01 |
Linked List Cycle (0) | 2021.06.29 |