您的位置:首页 > 其它

[203] Remove Linked List Elements

2016-07-26 15:34 211 查看

1. 题目描述

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

移除链表中等于给定值的元素。

2. 解题思路

首先移除头指针节点为给定值的元素,因为这个移除的方式和中间节点不太相同。之后移除后边重复的节点,使用两个指针p、q,p指向前一个不是的值,当发现q与值相等时,p->next = q->next,不相等时p、q后移。

3. Code

/**
* Definition for singly-linked list.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode removeElements(ListNode head, int val) {
// 首先去除所有处于头部的val
while(head != null && head.val == val)
{
head = head.next;
}
if(head == null) return head;
ListNode p = head, q = p.next;
while(q != null)
{
if(q.val == val)
{
p.next = q.next;
}else{
p = p.next;
}
q = p.next;
}
return head;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 链表