【发布时间】:2017-03-15 15:37:43
【问题描述】:
问题:给定一个值,从链表中删除该值的所有实例。 更多信息如下: JAVA
/**
* 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) {
ListNode n = head; //1, 2, 6, 3, 4, 5, 6
while(n.next == null){
if(n.next.val == val){
n.next = n.next.next;
}
n = n.next;
if(n == null){break;}
}
return head;
}
}
既然它是通过引用传递的,它应该更新不应该吗?
我试过了:
removeElements([1,2,6,3,4,5,6], 6)
但它没有删除任何东西。那么我做错了什么?
【问题讨论】:
-
因为它应该是 while(n.next != null),所以你也不检查头部是否包含你的值。您为此缺少很多检查语句。
-
while(n.next == null){如果您将长度为 1 的列表传递给removeElements会做一些非常丑陋的事情,如果列表更长,则不会。
标签: java algorithm data-structures linked-list