马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
媒介
标题: 203.移除链表元素
文档: 代码随想录——移除链表元素
编程语言: 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* removeElements(ListNode* head, int val) {
- ListNode* dummyHead = new ListNode(0); // 设置一个虚拟头结点
- dummyHead -> next = head; // 将虚拟头结点指向head,这样方便后面做删除操作
- ListNode* cur = dummyHead;
- while (cur -> next != NULL) {
- if(cur -> nex t-> val == val) {
- ListNode* tmp = cur -> next;
- cur -> next = cur -> next -> next;
- delete tmp;
- } else {
- cur = cur -> next;
- }
- }
- head = dummyHead -> next;
- delete dummyHead;
- return head;
- }
- };
复制代码
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( 1 ) O(1) O(1)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |