您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法

移除链表元素(图文)

第十三双眼睛2023-12-03【数据结构与算法】人已围观

简介移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

思路:因为链表的头节点也是可能等于目标值的,因此,先找到新的链表头,然后定义两个辅助节点,一个在前边依次检查每个节点的值是否与目标值相等,另一个节点负责把不等于目标值的节点连起来。代码如下:
public static ListNode method1(ListNode head,int val) {
    if (head == null) {
        return null;
    }
    ListNode current = head;
    ListNode newHead = null;
    while (current != null) {
        if (current.val == val) {
            current = current.next;
        } else {
            newHead = current;
            break;
        }
    }
    current = newHead;
    ListNode p = null;
    if (current != null) {
        p = current.next;
    }

    while (p != null) {
        if (p.val != val) {
            current.next = p;
            current = p;
            p = p.next;
        } else {
            p = p.next;
        }
    }
    if (current != null) {
        current.next = p;
    }

    return newHead;
}

思路二:递归。代码如下:
public static ListNode method2(ListNode head,int val) {
    if (head == null) {
        return null;
    }
    head.next = method2(head.next, val);
    return head.val == val ? head.next : head;
}

更加简单的写法:
public static ListNode method3(ListNode head,int val) {
    ListNode dummyHead = new ListNode(0);
    dummyHead.next = head;
    ListNode temp = dummyHead;
    while (temp.next != null) {
        if (temp.next.val == val) {
            temp.next = temp.next.next;
        } else {
            temp = temp.next;
        }
    }
    return dummyHead.next;
}



 

Tags:

很赞哦! ()

上一篇:快乐数(图文)

下一篇:同构字符串(图文)

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

本站推荐

站点信息

  • 网站名称:JavaStudy
  • 建站时间:2019-1-14
  • 网站程序:帝国CMS7.5
  • 文章统计242篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们