首页 > 代码库 > LeetCode--Remove Nth Node From End of List
LeetCode--Remove Nth Node From End of List
题目:
思路:
题目说 one pass
那么,这样,用两个结点(相当于c++的指针)p,q
p先跑n步,然后q和p一起跑,那么p跑到最后,q就正好在倒数第n个上面了。
ps:看了别人的代码,好多都是建立一个不用的头,然后真正的头在next里面,这样代码要少了单独处理头的那部分。
那么,这样,用两个结点(相当于c++的指针)p,q
p先跑n步,然后q和p一起跑,那么p跑到最后,q就正好在倒数第n个上面了。
ps:看了别人的代码,好多都是建立一个不用的头,然后真正的头在next里面,这样代码要少了单独处理头的那部分。
解决方案:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dumy = new ListNode(0);//建立一个不用的头。。。然后真正的头在next里面,减少对头的处理 dumy.next = head; ListNode p = dumy; ListNode q = dumy; for(int i = 0 ; i < n ; i++) p = p.next; while(p.next != null){ p = p.next; q = q.next; } q.next = q.next.next; return dumy.next; } }
LeetCode--Remove Nth Node From End of List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。