双指针解法删除链表中倒数第k个元素
package mypack6;
public class test {
public listNode DeleteNthFromTail(listNode head,int n){
listNode dummy=new listNode(0);
dummy.next=head;
listNode node1=dummy,node2=dummy;
while (node1!=null){
node1=node1.next;
if(n<0&&node1!=null){
node2=node2.next;
}
n--;
}
node2.next=node2.next.next;
return dummy.next;
}
public static void main(String[] args) {
listNode l1=new listNode(1);
listNode l2=new listNode(2);
listNode l3=new listNode(3);
listNode l4=new listNode(4);
l1.next=l2;
l2.next=l3;
l3.next=l4;
test t=new test();
listNode node = t.DeleteNthFromTail(l1, 2);
while (node!=null){
System.out.println(node.val);
node=node.next;
}
}
}
总结:关键在于交互过程 有了过程, 就能写出来 这个过程是符合逻辑的,不要忽略过程而只注重结果。