代码随想录算法训练营第三天【链表】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;
    }
}
复制代码

 

 

posted @   橙子的房东  阅读(84)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示