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 };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端