p36 单链表删除元素 (leetcode 203)
一:解题思路
这道题目是常规的链表删除的题目,为了使链表的第一个元素和链表的其他元素处理具有相同的方式,创建一各虚拟的节点,让这个虚拟的头节点的next指针指向链表的首节点。Time:O(n),Space:O(1)
二:完整代码示例 (C++版和Java版)
C++:
class Solution { public: ListNode* removeElements(ListNode* head, int val) { ListNode* dummy = new ListNode(0); dummy->next = head; ListNode* p = dummy; while (p->next!=NULL) { if (p->next->val == val) { ListNode* toDel = p->next; p->next = toDel->next; } else { p = p->next; } } return dummy->next; } };
Java:
class Solution { public ListNode removeElements(ListNode head, int val) { ListNode dummy=new ListNode(0); dummy.next=head; ListNode p=dummy; while(p.next!=null) { if(p.next.val==val) { ListNode toDel=p.next; p.next=toDel.next; } else { p=p.next; } } return dummy.next; } }

浙公网安备 33010602011771号