首页 > 学院 > 开发设计 > 正文

【leetcode】203. Remove Linked List Elements

2019-11-06 06:51:58
字体:
来源:转载
供稿:网友

203. Remove Linked List Elements

https://leetcode.com/PRoblems/remove-linked-list-elements/?tab=Description

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

思路

用一个新的ListNode fakehead来处理边界情况,fakeHead.next = head;由于本题有可能删除当前节点,所以用双指针pre和curr。

代码

解法一

public class Solution { public ListNode removeElements(ListNode head, int val) { ListNode fakeHead = new ListNode(-1); fakeHead.next = head; ListNode curr = head, prev = fakeHead; while (curr != null) { if (curr.val == val) { prev.next = curr.next; } else { prev = prev.next; } curr = curr.next; } return fakeHead.next; }}

解法二 递归

个人不认为这是个好解法,如果LinkedList长度过大,会堆溢出

public ListNode removeElements(ListNode head, int val) { if (head == null) return null; head.next = removeElements(head.next, val); return head.val == val ? head.next : head;}
上一篇:mysql的基本语句

下一篇:File的节点流

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表