leetcode 19. Remove Nth Node From End of List (Linked list)

来源:互联网 发布:java项目学生管理系统 编辑:程序博客网 时间:2024/05/29 09:01

题意:

给你一个链表,让你删除倒数第n个数据。时间复杂度为O(n);

思路:

建立一个快指针和一个慢指针,快指针先向前n次,慢指针不动,之后一起向前,当快指针移动到末端,慢指针所处的位置就是要删除的数据的位置。

注意处理删除最后一个数据和第一个数据的特殊情况。

java代码:

class Solution {    public ListNode removeNthFromEnd(ListNode head, int n) {        ListNode fast = head;        ListNode slow = head;        if(n==0){            return head;        }        if(n==1&&head.next==null){            return head.next;        }        while(n>0){            if(fast.next==null){                return head.next;            }            fast = fast.next;            n--;        }        while(fast.next!=null){            slow = slow.next;            fast = fast.next;        }        if(slow.next!=null)            slow.next = slow.next.next;        return head;    }}

阅读全文
0 0
原创粉丝点击