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

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

2016-06-08 00:00 507 查看
摘要: Leet Code 19 删除链表中倒数第n个节点 - Remove Nth Node From End of List - Java

问题原始链接 https://leetcode.com/problems/remove-nth-node-from-end-of-list

给定一个链表,删除倒数第n个节点,返回链表头。

例子:

给定链表 1->2->3->4->5,n=2。

删除倒数第2个节点后,链表变成 1->2->3->5。

注意:

给定的n总是有效。

试试看只扫描一遍链表。

[code=language-java]/**
* Definition for singly-linked list.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) { val = x; }
* }
*/
public class Solution {
public static ListNode removeNthFromEnd(ListNode head, int n) {
ListNode s = head;
ListNode p = head;
ListNode q = head;
while (s != null) {
s = s.next;
if (n <= 0) {
q = q.next;
if (n == 0) {
n--;
} else if (n < 0) {
p = p.next;
}
} else {
n--;
}
}

if (q == head) {
q = head.next;
head.next = null;
return q;
} else {
p.next = q.next;
q.next = null;
return head;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息