关闭

【Leetcode】Remove Linked List Elements

389人阅读 评论(0) 收藏 举报
分类:

题目链接:https://leetcode.com/problems/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

思路:

链表增删操作都需要考虑删、增的是第一个结点的时候该怎么办,使得对表头操作和中间结点的操作不统一,需要特殊处理。

如果有头结点就可以省略判断如果删、增的是表头的情况,简化程序。

算法1:无头结点

	public ListNode removeElements(ListNode head, int val) {
		ListNode pre, p;
		pre = head;
		p = head;
		while (p != null) {
			if (p.val == val) {
				pre.next = p.next;
				p = p.next;
			} else {
				pre = p;
				p = p.next;
			}
		}
		// 处理第一个节点如果等于val的情况
		if (head == null) {
			return null;
		} else if (head.val == val) {// 如果删除的是第一个节点
			head = head.next;
		}
		return head;
	}

算法2:有头结点时

	public ListNode removeElements(ListNode head, int val) {
		ListNode pre, p;
		ListNode newHead = new ListNode(0);
		newHead.next = head;
		pre = newHead;
		p = newHead.next;

		while (p != null) {
			if (p.val == val) {
				pre.next = p.next;
			} else {
				pre = p;
			}
			p = p.next;
		}
		return newHead.next;
	}


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

【LeetCode-面试算法经典-Java实现】【019-Remove Nth Node From End of List(移除单链表的倒数第N个节点)】

【019-Remove Nth Node From End of List(移除单链表的倒数第N个节点)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a l...
  • DERRANTCM
  • DERRANTCM
  • 2015-07-22 07:24
  • 2049

Leetcode ☞ 203. Remove Linked List Elements ☆ 【dummy 方法二重点掌握】 【方法三双重指针】

给一个单链表和一value,删除掉值等于给定的value的节点,并返回。
  • Dr_Unknown
  • Dr_Unknown
  • 2016-03-08 14:55
  • 322

CareerCup之2.1无序链表删除重复元素

【题目】 原文: 2.1 Write code to remove duplicates from an unsorted linked list. FOLLOW UP H...
  • SunnyYoona
  • SunnyYoona
  • 2014-05-18 17:08
  • 1914

leetcode练习笔记

leetcode 344. Reverse String Write a function that takes a string as input and returns the string ...
  • tinkle181129
  • tinkle181129
  • 2016-06-26 13:43
  • 376

【LeetCode-面试算法经典-Java实现】【160-Intersection of Two Linked Lists(单链表的交集)】

【160-Intersection of Two Linked Lists(单链表的交集)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Write a program ...
  • DERRANTCM
  • DERRANTCM
  • 2015-08-22 06:45
  • 3188

遍历List 同时 remove 元素

List list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(...
  • Vestigge
  • Vestigge
  • 2013-01-21 14:22
  • 3705

基于C++ list中erase与remove函数的使用详解

erase的作用是,使作为参数的迭代器失效,并返回指向该迭代器下一参数的迭代器。 如下: 复制代码代码如下: list ParticleSystem; list::iter...
  • wujin8589
  • wujin8589
  • 2016-07-21 08:16
  • 241

Java list.remove( )方法需要注意的两个地方

list.remove最近做项目的过程中,需要用到list.remove()方法,结果发现两个有趣的坑,经过分析后找到原因,记录一下跟大家分享一下。代码直接上一段代码,进行分析。public clas...
  • DeMonliuhui
  • DeMonliuhui
  • 2017-07-13 14:41
  • 2203

Java list.remove( )方法需要注意的两个地方

public class Main { public static void main(String[] args) { List stringList = new Arra...
  • anmoyyh
  • anmoyyh
  • 2017-07-24 14:03
  • 640

【LeetCode-面试算法经典-Java实现】【092-Reverse Linked List II(反转单链表II)】

【092-Reverse Linked List II(反转单链表II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Reverse a linked list fro...
  • DERRANTCM
  • DERRANTCM
  • 2015-08-06 07:40
  • 1643
    个人资料
    • 访问:556499次
    • 积分:8557
    • 等级:
    • 排名:第2656名
    • 原创:305篇
    • 转载:6篇
    • 译文:0篇
    • 评论:37条
    博客专栏
    文章分类
    最新评论