代码随想录算法训练营第三天【链表】203.移除链表元素、707.设计链表、206.反转链表
203.移除链表元素
力扣题目链接:https://leetcode.cn/problems/remove-linked-list-elements/
心得:这道题做出来了,但是看了题解,发现使用虚拟头结点更简清晰,附上代码。
没用虚拟头结点:
class Solution { public ListNode removeElements(ListNode head, int val) { while(head != null && head.val == val){ head = head.next; } if(head == null){ return head; } ListNode cur = head; while(cur.next != null){ if(cur.next.val == val){ cur.next = cur.next.next; }else{ cur = cur.next; } } return head; } }
设置虚拟头结点:
class Solution { public ListNode removeElements(ListNode head, int val) { ListNode dummyHead = new ListNode(); dummyHead.next = head; ListNode cur = dummyHead; while(cur.next != null){ if(cur.next.val == val){ cur.next = cur.next.next; }else{ cur = cur.next; } } return dummyHead.next; } }
707.设计链表
力扣题目链接:https://leetcode.cn/problems/design-linked-list/
心得:时间不够,先学习一下思路,后面补代码
206.反转链表
力扣题目链接:https://leetcode.cn/problems/reverse-linked-list/
心得:关键点在于要明确三个节点(上一个节点、当前节点、下一个节点),反转过程如下:
1)首先记录下一个节点
2)当前节点反转
3)上一个节点移动
4)当前节点移动
class Solution { public ListNode reverseList(ListNode head) { ListNode cur = head; ListNode pre = null; ListNode next = null; while(cur != null){ next = cur.next; cur.next = pre; pre = cur; cur = next; } return pre; } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~