Leetcode 19. 删除链表的倒数第N个节点
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* removeNthFromEnd(struct ListNode *head, int n) {
if(head == NULL) return head;
struct ListNode *p = head;
struct ListNode *q = head;
while(n--) {
p = p->next;
}
if(p == NULL) {
return head->next;
}
p = p->next;
while(p) {
p = p->next;
q = q->next;
}
q->next = q->next->next;
return head;
}
Leetcode 83. 删除排序链表中的重复元素
示例1:
输入: 1->1->2->3->3
输出: 1->2->3
示例2:
输入: 1->1->2
输出: 1->2
struct ListNode {
int val;
struct ListNode *next;
}
struct ListNode *deleteDuplicates(struct ListNode *head) {
if(head == NULL) return head;
struct ListNode *first = head, *second = head->next;
while(second) {
if(first->val == second->val) {
first->next = second->next;
second = first->next;
} else {
first = first->next;
second = second -> next;
}
}
return head;
}