LinkCode 452 删除链表中的元素

前言:我刷LinkCode的第二题,挺简单的

题目:删除链表中等于给定值val的所有节点。

样例
给出链表1->2->3->3->4->5->3, 和 val =3
, 你需要返回删除3之后的链表:1->2->4->5

思路
  1. 先判断第一个节点是否为val,是的话就将head向后移动,直到出现不一样的为止。
  2. 定义一个current,privious代表当前的节点和前面的节点
  3. 断开节点,完成!
    /**
     * @param head a ListNode
     * @param val an integer
     * @return a ListNode
     */
    public ListNode removeElements(ListNode head, int val) {
        // Write your code here
        if (head == null) return null;
        while (head.val == val) {
            if (head.next == null) return null;
            head = head.next;
        }
        if (head == null) return null;
        ListNode current = head.next;
        ListNode previous = head;
        while (current!= null) {
            if (current.val == val) {
                previous.next = current.next;
                current = current.next;
            }else{
                previous = current;
                current = current.next;
            }
        }
        return head;
    }
    原文作者:mecury
    原文地址: https://www.jianshu.com/p/78d190604b80
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞