【发布时间】:2016-07-14 11:46:07
【问题描述】:
你能解释一下为什么我的代码不总是删除链表中等于方法参数中给定值的所有值吗?我应该如何解决它?它通过了 97% 的测试用例。我更喜欢解决这个问题,而不是使用 prev/next/dummy 指针更改整个方法。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
/**
* @param head a ListNode
* @param val an integer
* @return a ListNode
*/
public ListNode removeElements(ListNode head, int val) {
while (head!=null && head.val==val){
head = head.next;
}
ListNode tmp=head;
while (tmp!=null) {
if (tmp.next!=null && tmp.next.val== val ) {
tmp.next=tmp.next.next;
}
tmp=tmp.next;
}
if (tmp != null) {
if (tmp.val == val) {
tmp = tmp.next;
}
}
return head;
}
}
它没有通过这个测试用例:
Input
5->6->6->null, 6
Output
5->6->null
Expected
5->null
这里是the problem 的更多详细信息:
Given 1->2->3->3->4->5->3, val = 3, you should return the list as 1->2->4->5
【问题讨论】:
-
您是否尝试过使用调试器查看您的代码会发生什么?
-
我有,问题是不知道如何在不使用 prev 指针的情况下解决这个问题,但我也想用我正在处理的相同代码来解决这个问题!我知道如果要删除的项目相邻,我的代码将不起作用
标签: java algorithm data-structures linked-list singly-linked-list