Remove all elements from a linked list of integers that have valueval.
Example Given:1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6,val= 6 Return:1 --> 2 --> 3 --> 4 --> 5
https://leetcode.com/problems/remove-linked-list-elements/#/description
单向链表的删除操作,基础题目
# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object):def removeElements(self, head, val):""":type head: ListNode:type val: int:rtype: ListNode"""work = headprior = Nonewhile work is not None:if work.val == val:if prior is None:head = work.nextelse:prior.next = work.nextelse:prior = workwork = work.nextreturn head
public static ListNode removeElements(ListNode head, int val) {ListNode pre = new ListNode(Integer.MAX_VALUE);pre.next = head;ListNode result = pre;ListNode now = head;while (now != null) {if (now.val == val) {pre.next = now.next;now = pre.next;} else {pre = pre.next;now = now.next;}}return result.next;}
需要考虑root可能需要被删除的情况.
//type ListNode struct {// Val int// Next *ListNode//}func removeElements(root *ListNode, val int) {pre := &ListNode{Next: root,}cur := rootfor cur != nil {if cur.Val == val {pre.next = now.nextnow = pre.next} else {pre = pre.nextnow = now.next}}return pre.Next}