LeetCode203 移除链表元素

打印 上一主题 下一主题

主题 1001|帖子 1001|积分 3003

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
媒介

   标题: 203.移除链表元素
文档: 代码随想录——移除链表元素
编程语言: C++
解题状态: 解答错误,忘了链表的遍历是如何进行的了
  思路

对于链表的操纵,最好可以给一个虚拟表头方便操纵。另外需要留意的是,在删除链表的节点后,我们需要手动进行清理内存。
代码

  1. /**
  2. * Definition for singly-linked list.
  3. * struct ListNode {
  4. *     int val;
  5. *     ListNode *next;
  6. *     ListNode() : val(0), next(nullptr) {}
  7. *     ListNode(int x) : val(x), next(nullptr) {}
  8. *     ListNode(int x, ListNode *next) : val(x), next(next) {}
  9. * };
  10. */
  11. class Solution {
  12. public:
  13.     ListNode* removeElements(ListNode* head, int val) {
  14.         ListNode* dummyHead = new ListNode(0); // 设置一个虚拟头结点
  15.         dummyHead -> next = head; // 将虚拟头结点指向head,这样方便后面做删除操作
  16.         ListNode* cur = dummyHead;
  17.         while (cur -> next != NULL) {
  18.             if(cur -> nex t-> val == val) {
  19.                 ListNode* tmp = cur -> next;
  20.                 cur -> next = cur -> next -> next;
  21.                 delete tmp;
  22.             } else {
  23.                 cur = cur -> next;
  24.             }
  25.         }
  26.         head = dummyHead -> next;
  27.         delete dummyHead;
  28.         return head;
  29.     }
  30. };
复制代码


  • 时间复杂度:                                              O                               (                               n                               )                                      O(n)                        O(n)
  • 空间复杂度:                                              O                               (                               1                               )                                      O(1)                        O(1)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表