首页 > 其他 > 详细

Lintcode452-Remove Linked List Elements-Easy

时间:2019-04-03 12:35:44      阅读:149      评论:0      收藏:0      [点我收藏+]

Remove Linked List Elements

Remove all elements from a linked list of integers that have value val.

Example

Example 1:

Input: head = 1->2->3->3->4->5->3->null, val = 3
Output: 1->2->4->5->null

Example 2:

Input: head = 1->1->null, val = 1
Output: null


思路:

函数参数中的ListNode head是链表中的第一个节点。所以要先加入头节点dummy, 并使head变为头节点(line 4)。(头节点指向链表的第一个节点)

加入头节点有两个作用:

  1. dummy node 始终指向链表的第一个节点,这样返回整个链表只需要dummy.next
  2. head 作为头节点,使对链表第一个节点的操作(插入,删除等)和链表内其他节点相同,不用单独考虑第一个节点操作的特殊性。

注意:

line 10 一定要加else,否则可能抛出NullPointerException异常。比如 Input: head = 1->2->3->3->4->5->3->null, val = 3。

if语句要用准!

代码:

 1 public ListNode removeElements(ListNode head, int val) {
 2         ListNode dummy = new ListNode(0);
 3         dummy.next = head;
 4         head = dummy;
 5         
 6         while (head.next != null){
 7             if (head.next.val == val) {
 8                 head.next = head.next.next;
 9             }
10             else head = head.next; 
11         }
12         return dummy.next;
13     }

 

Lintcode452-Remove Linked List Elements-Easy

原文:https://www.cnblogs.com/Jessiezyr/p/10648005.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!