题目描述
Given a linked list, remove the nth node from the end of list and return its head.
示例
Given linked list: 1->2->3->4->5, and n = 2.
After removing the second node from the end, the linked list becomes 1->2->3->5.
代码实现
自己动手实现
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
if (head == null || n < 0)
return null;
ListNode temp = head;
ListNode kthNode = head;
ListNode headKthNode = head;
int count = 0;
if (head.next == null && n == 1)
return null;
while (temp.next != null) {
temp = temp.next;
count++;
if (count == n) {
kthNode = kthNode.next;
}
if (count == n+1) {
headKthNode = head.next;
kthNode = kthNode.next;
break;
}
}
while (temp.next != null) {
temp = temp.next;
kthNode = kthNode.next;
headKthNode = headKthNode.next;
}
if (kthNode.next != null){
headKthNode.next = kthNode.next;
} else {
headKthNode.next = null;
}
if (count < n) {
head = head.next;
}
return head;
}
}
其他人实现的
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode cur = head, prev = head;
while(n-- > 0) {
cur = cur.next;
}
if (cur == null)
return head.next;
while (cur.next != null) {
cur = cur.next;
prev = prev.next;
}
prev.next = prev.next.next;
return head;
}
}
总结
起名一定要简单明了
代码尽量简短
差距太大,快快补齐