203. 移除链表元素

做题思路:

  1,因为要删掉一个节点,要将他的前一个节点指向目标节点的后一个节点,即是与目标节点的前一个节点息息相关,但头节点又没有前一个节点,所以如果正常做要分类讨论

  但这里用一个虚拟头节点来指向头节点,这样头节点就有了前一个节点。

  2,因为我是c++,所以上面的做法会浪费空间,要手动删除内存空间,用一个 temp 指向要删除的空间,然后用delete解决

  3,别忘了链表的遍历的中止条件 : cur->next != nullptr  

  4,我这里忘了把虚拟头节点的内存删除了,惭愧

复制代码
 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* fakeHead = new ListNode();
15         fakeHead->next = head;
16         ListNode* cur = fakeHead;
17         while (cur->next != nullptr) {
18             if (cur->next->val == val) {
19                 ListNode* temp = cur->next;
20                 cur->next = cur->next->next;
21                 delete temp;
22             } else {
23                 cur = cur->next;
24             }
25         }
26         head = fakeHead->next;
27         return head;
28     }
29 };
复制代码

 

posted @   北原春希  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示