[LeetCode] 19. Remove Nth Node From End of List Java

Posted BrookLearnData

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 19. Remove Nth Node From End of List Java相关的知识,希望对你有一定的参考价值。

题目: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.

Note:
Given n will always be valid.
Try to do this in one pass.

题意及分析:开始我的做法是先遍历一遍取得长度,然后长度减去n就知道要删除正着数第几个元素,不符合要求,因为只能遍历一次,所以只能用两个指针,一个快指针先走n步,一个慢指针从头开始走,这样当快指针走到尾部的时候,慢指针所指的就是要删除元素的前一个元素。

代码:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        if(head == null) return null;
        ListNode fast = head;//因为只能遍历一次,所以只能用两个指针,一个快指针先走n步,一个慢指针从头开始走,这样当快指针走到尾部的时候,慢指针所指的就是要删除元素的前一个元素。
        ListNode low = head;
        for(int i=0;i<n;i++){
            fast = fast.next;
        }
        if(fast == null){
            head = head.next;
            return head;
        }
        
        while(fast.next != null){
            low = low.next;
            fast = fast.next;
        }
        low.next = low.next.next;
        return head;
    }
}

 



以上是关于[LeetCode] 19. Remove Nth Node From End of List Java的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode19. Remove Nth Node From End of List

leetcode 19. Remove Nth Node From End of List

LeetCode 19. Remove Nth Node From End of List

[LeetCode] 19. Remove Nth Node From End of List

Leetcode 19. Remove Nth Node From End of List(python)

LeetCode(19) - Remove Nth Node From End of List