注意到,里面有2种方法,第一种方法是只有一个节点,这个删除节点方法和LeetCode里面一提delete指定node相类似.但是有一个问题是当我走到最后一个节点的时候,如果这个节点的value是大于指定的X的话,我怎么也删除不了该节点,我想到的办法是将 该节点前面的节点用prev来标注, 之后 再一个一个的向右移动. 见第二个方法DeleteNodeWay
package com.company;
/**
* Created by hongruzh on 10/15/16.
*/
public class DeleteNodeGreaterThanX {
public ListNode DeleteNode(ListNode head,int x){
if(head==null) return null;
ListNode dummy = new ListNode(Integer.MIN_VALUE);
dummy.next = head;
ListNode node = dummy;
ListNode prev = node;
while(node!=null) {
if (node.val > x) {
if(node.next==null) node = null;
//这样是不行的,
else{
node.val = node.next.val;
node.next = node.next.next;
}
}
else{
node = node.next;
}
}
return dummy.next;
}
public ListNode DeleteNodeWay(ListNode head,int x){
if(head==null) return null;
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode node = dummy.next;
ListNode prev = dummy;
while(node!=null){
if(node.val>x){
ListNode next = node.next;
prev.next = next;
node = node.next;
}
else{
prev = node;
node = node.next;
}
}
return dummy.next;
}
}