leetcode 0019
说明
只是为了记录一下,不求多快,也不深究。
会简要描述思路,代码中不写注释。
如碰到不会做的用了别人代码会在博客中标出。
题目描述
结果
思路
以前学数据结构好像碰到过。
倒数第n个到最后一个之间的距离和正数第n个到第一个的距离一样。
找到正数第n+1个,然后和头指针一起往后移,最后头指针就变成了倒数第n个的前一个。
这样就能删除下一个节点了。
还有就是边界情况考虑一下。
代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode tail = head;
ListNode topN = head;
int count = 1;
while(true) {
if(count == n+1) {
break;
}
tail = tail.next;
count++;
}
if(tail == null) {
return head.next;
}
while(tail.next!=null) {
tail = tail.next;
topN = topN.next;
}
topN.next = topN.next.next;
return head;
}
}