您的位置:首页 > 编程语言 > Java开发

Java - 删除链表中倒数第n个节点

2017-08-08 11:10 351 查看
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。 注意事项链表中的节点个数大于等于n您在真实的面试中是否遇到过这个题? Yes样例给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.挑战 O(n)时间复杂度/*** Definition for ListNode.* p4000ublic class ListNode {* int val;* ListNode next;* ListNode(int val) {* this.val = val;* this.next = null;* }* }*/public class Solution {/*** @param head: The first node of linked list.* @param n: An integer.* @return: The head of linked list.*/ListNode removeNthFromEnd(ListNode head, int n) {// write your code hereListNode p=head;ListNode q=head;for(int i=0;i<n;i++){p=p.next;}if(p==null){head=head.next;return head;}while(p.next!=null){p=p.next;q=q.next;}q.next=q.next.next;return head;}}
思路很简单,只有两种出现的情况,1、链表的长度刚刚好等于n,也就是说删除表头节点,2、链表长度大于n,那么我们先定义两个表头,一个后移n位,然后两个链表同时后移
,这时当后面的节点到达尾部时,前面的节点就是删除的节点的前一个节点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: