给你一个链表,删除链表的倒数第 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; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)