【数据结构】单链表面试题(Java + 力扣 + 详解)

🎇🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!
人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习!
欢迎志同道合的朋友一起加油喔 💪💪💪
目标梦想:进大厂,立志成为一个牛掰的Java程序猿,虽然现在还是一个🐒嘿嘿
谢谢你这么帅气美丽还给我点赞!比个心

一、移除链表元素

203.移除链表元素

1. 题目


在这里插入图片描述


2. 解析


  • 特殊情况处理:
  • 如果链表头节点 head 为空,直接返回 null,表示链表为空,无需处理。
if(head == null){
   
    return null;
}

在这里插入图片描述

  • 一般情况处理:
  • 定义两个指针,prevNode 指向当前节点前一个节点(初始为头节点)cur 指向当前节点下一个节点
ListNode prevNode = head;
ListNode cur = head.next;
  • 循环遍历链表:
  • 使用 cur 指针遍历链表,当 cur 不为 null 时执行循环。
  • 如果 cur 指向的节点的值等于 val,则将 prevNode.next 指向 cur.next,即跳过当前节点 cur
  • 否则,更新 prevNode 为 cur,并将 cur 移动到下一个节点。
while(cur != null){
   
    if(cur.val == val){
   
        prevNode.next = cur.next;
        cur = cur.next;
    }else{
   
        prevNode = cur;
        cur = cur.next;
    }
}
  • 处理头节点:
  • 最后处理头节点,如果头节点的值等于 val,则将头节点 head 指向下一个节点,即跳过头节点。
if(head.val == val){
   
    head = head.next;
}
  • 返回链表头:
  • return head; 返回处理后的链表头节点。

3. 完整代码展示


/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
   
    public ListNode removeElements(ListNode head, int val) {
   
        //特殊情况、链表为空
        if(head == null){
   
            return null;
        }

        //处理一般情况
        //定义两个指针,prev 指向第一个节点,cur 指向第二个节点
        ListNode prevNode = head;
        ListNode cur = head.next;

        //循环判断条件 cur != null
        //先不考虑 头节点
        //从第二个节点开始排查
        while(cur != null){
   
            if(cur.val == val){
   
                prevNode.next = cur.next;
                cur = cur.next;
            }else{
   
                prevNode = cur;
                cur = cur.next;
            }
        }
        //最后处理头节点
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值