首页 > 代码库 > 19. Remove Nth Node From End of List
19. Remove Nth Node From End of List
https://leetcode.com/problemset/all/?search=19
涉及链表删除操作的时候,稳妥起见都用 dummy
node,省去很多麻烦。因为不一定什么时候 head 就
被删了。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { if (head == null) { return head; } int len = 0; ListNode dummy = new ListNode(0); dummy.next = head; while (head != null) { len++; head = head.next; } head = dummy; int index = len - n; while (index > 0) { head = head.next; index--; } head.next = head.next.next; return dummy.next; } }
快慢指针
public ListNode removeNthFromEnd(ListNode head, int n) { ListNode start = new ListNode(0); ListNode slow = start, fast = start; slow.next = head; //Move fast in front so that the gap between slow and fast becomes n for(int i=1; i<=n+1; i++) { fast = fast.next; } //Move fast to the end, maintaining the gap while(fast != null) { slow = slow.next; fast = fast.next; } //Skip the desired node slow.next = slow.next.next; return start.next; }
19. Remove Nth Node From End of List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。