19. Remove Nth Node From End of List

题目:
Given a linked list, remove the nth node from the end of list and return its head.

For example,

Given linked list: 1->2->3->4->5, and n = 2.

After removing the second node from the end, the linked list becomes 1->2->3->5.

There are two ways the first one is two pass the second one is two pass.
It’s straightforward to think about the two pass, the first thing coming to my head is the length of the List, then calculate the location of the specific node and remove it.
java的引用问题,two pass 采用一个pointer, one pass 采用两个pointer.

一个新的引用指向一个对象,引用被操作后的结果会影响其所指的对象。

two pass :

public class Remove {

        public static ListNode removeNthFromEnd(ListNode head, int n) {
            ListNode dummy=new ListNode(0);
            int length=0;
            ListNode first=head;
            while(first!=null){
                length++;
                first=first.next;
            }
            length-=n;
            dummy.next=head;
            first=dummy;
            while(length>0){
                length--;
                first=first.next;
            }
            first.next=first.next.next;
            return dummy.next;
    }

}

one pass:

public class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
       ListNode dummy=new ListNode(0);
       ListNode first,second;
       dummy.next=head;
       first=dummy;
       second=dummy;
       for(int i=0;i<=n;i++){
           first=first.next;
       }
       while(first!=null){
           first=first.next;
           second=second.next;
       }
       second.next=second.next.next;

       return dummy.next;
    }
}

利用两个指针的长度差,一个指针的顺序就相当于两一个指针的倒序,来计算出被剔除点所在的位置。

first=first.next 这样的操作并不会影响到原对象。

reference:https://leetcode.com/articles/remove-nth-node-end-list/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值