您的位置:首页 > Web前端 > Node.js

[LeetCode] Remove Nth Node From End of List

2014-05-03 18:28 429 查看
链表问题。这种问题主要是指针的操作,需要细心一点,另外这个问题的附加条件是只遍历一次。参考了讨论里面的解答才做出来的。首先用一个先驱指针先前进n步,然后先驱和后继同时前进,等先驱遇到null的时候,后继指针就到了该删除节点的地方了。如果先驱指针前进n步后已经到达null,那直接把head往后指一个节点就行了。

/**
* 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 temp = head;
ListNode pioneer = head;
while (pioneer != null) {
if (--n >= 0) {
pioneer = pioneer.next;
if (pioneer == null) {
head = head.next;
}
} else {
if (pioneer.next == null) {
temp.next = temp.next.next;
break;
} else {
temp = temp.next;
pioneer = pioneer.next;
}
}
}
return head;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: