机器学习之路漫漫
MLEW(Maching Learning & Endless Way)

导航

 

思路1:设置两个指针p1,p2指向表头,p1先走n步。再两个指针同时走。当p1指针指到链表尾部时,P2指针已经在需要删除节点的前一位。一定要注意一些细节。

 1 class ListNode {
 2     int val;
 3     ListNode next;
 4     ListNode(int x) { val = x; }
 5 }
 6 
 7 
 8 public ListNode removeNthFromEnd(ListNode head, int n) {
 9        if(head==null||n<=0){
10            return head;
11        }
12        ListNode p1=head;
13        ListNode p2=head;
14 
15        while(n!=0){
16            if(p1.next!=null){
17                p1=p1.next;
18            }else if(n==1){
19                return head.next;
20            }else{
21                return head;
22            }
23            n--;
24        }
25        
26        //两个指针同时移动
27        while(p1.next!=null){
28            p1=p1.next;
29            p2=p2.next;
30        }
31        //此时p2指针已经在倒数第n+1位,开始删除倒数第n位
32        p2.next=p2.next.next;
33        return head;  

思路2:指针p1向前走n-1步,两个指针同时走,p1走到尾节点时,p2到达的节点就是需要删除的节点。此时,可以通过复制后一个元素val给前一个元素,再删除后一个元素即可。实现删除该元素。 要注意细节。

 1    public ListNode removeNthFromEnd1(ListNode head, int n) {
 2        if(head==null||n<=0){
 3            return head;
 4        }
 5        if(n==1){
 6            //如果删除倒数第一位,则直接删除
 7            if(head.next==null){
 8                return null;
 9            }else{
10                ListNode h=head;
11                while(h.next.next!=null){
12                    h=h.next;
13                }
14                h.next=null;
15                return head;
16            }
17           
18        }
19        ListNode p1=head;
20        ListNode p2=head;
21 
22        while(n!=1){
23            if(p1.next!=null){
24                p1=p1.next;
25            }else if(n!=1){    //如果n大于链表长度的情况
26                return head;
27            }
28            n--;
29        }
30        
31        //两个指针同时移动
32        while(p1.next!=null){
33            p1=p1.next;
34            p2=p2.next;
35        }
36        //此时p2指针已经在倒数第n位,开始删除倒数第n位
37        p2.val=p2.next.val;
38        p2.next=p2.next.next;
39        return head;   
40    }  

 

posted on 2015-11-22 00:24  suchang  阅读(148)  评论(0编辑  收藏  举报