LeetCode 203. Remove Linked List Elements

问题描述

  • Remove all elements from a linked list of integers that have value val.
  • Example:

Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6
Return: 1 –> 2 –> 3 –> 4 –> 5

问题分析

  • 利用dummy 节点来避免可能删除头结点这种特殊操作
  • 利用递归来避免可能删除头结点这种特殊操作

代码实现

  • dummy 节点法
    public ListNode removeElements(ListNode head, int val) {
        if (head == null) {
            return head;
        }
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        ListNode preNode = dummy;
        ListNode curNode = head;
        while (curNode != null) {
            ListNode nextNode = curNode.next;
            if (curNode.val == val) {
                preNode.next = nextNode;
            }else {
                preNode = curNode;
            }
            curNode = nextNode;
        }
        return dummy.next;
    }
  • 递归
    public ListNode removeElements(ListNode head, int val) {
        if (head == null) {
            return head;
        }
        ListNode resList = removeElements(head.next, val);
        if (head.val == val) {
            return resList;
        }else {
            head.next = resList;
            return head;
        }
    }
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zjxxyz123/article/details/79980398
文章标签: LeetCode 链表
个人分类: LeetCode
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭