题目:
给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
示例:
输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]
思路:
感觉这个好像不是很难?
用个双指针也是老套路了,一个先出发一个后出发。
right先走,走到n时left走。等right到终点时,left就到要删的那个节点了
复杂度:
时间复杂度:O(n)
空间复杂度:O(1)
代码:
public ListNode removeNthFromEnd(ListNode head, int n) {
if(head == null) return null;
ListNode node = new ListNode(0,head);
ListNode right = head;
ListNode left = node;
int count = 0;
while(count != n){
right = right.next;
count++;
}
while(right!=null){
right = right.next;
left = left.next;
}
left.next =left.next.next;
ListNode res = node.next;
return res;
}