前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每天一道leetcode203-移除链表的元素

每天一道leetcode203-移除链表的元素

作者头像
乔戈里
发布2019-09-17 14:53:32
4040
发布2019-09-17 14:53:32
举报
文章被收录于专栏:Java那些事Java那些事

题目

leetcode203-移除链表的元素 中文链表: https://leetcode-cn.com/problems/remove-linked-list-elements/description/ 英文链接: https://leetcode.com/problems/remove-linked-list-elements/description/ 分类:链表

题目详述

删除链表中等于给定值 val 的所有节点。 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5

题目详解

思路

  • 首先是删除开头的节点与val值相等的节点;
  • 然后是删除中间的与val相等的节点,采取之前的这道题的解法每天一道leetcode237-删除链表中的节点,就是交换当前节点与下一个节点的val值,然后把下一个节点删除就行;
  • 最后处理最后的一个节点。

代码

代码语言:javascript
复制
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode removeElements(ListNode head, int val) {
        if(head == null)
            return head;
        while(head != null && head.val == val)
            head = head.next;
        if(head == null)
            return head;
        ListNode temp = head.next;
        ListNode pre = head;
        while(temp != null)
        {
            if(temp.next == null)
            {
                if(temp.val != val)
                    break;
                pre.next = null;
                break;
            }
            if(temp != null && temp.val == val)
            {
                int value = temp.next.val;
                temp.val = value;
                temp.next = temp.next.next;
            }else
            {
                pre = temp;
                temp = temp.next;
            }

        }
        return head;
    }
}

代码讲解

  • 13-14行去判断开头的节点,如果头结点与val值相等,那么该删除,直到头结点值不相等
  • 17-18行是保留一个pre的前置节点,以便删除最后一个节点(如果与val相等)
  • 21-27行是处理最后一个节点,如果最后一个节点是val,那么删除最后一个节点,pre的下一个就是最后一个节点;
  • 28-32行如果中间的当前节点与val值相等,那么通过交换当前节点的值与下一个节点的值以后,删除一个节点的;
  • 35-36行如果与val不相等,那么直接继续往前移动。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员乔戈里 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 题目详述
  • 题目详解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档