1:题目地址

Remove Nth Node From End of List

2:解题思路

可以用Map实现,也可以用快慢指针实现

3:Java代码

  1. public ListNode removeNthFromEnd4(ListNode head, int n) {
  2. ListNode dummy = new ListNode(0);
  3. dummy.next = head;
  4. ListNode first = dummy;
  5. ListNode second = dummy;
  6. for (int i = 1; i <= n + 1; i++) {
  7. first = first.next;
  8. }
  9. while (first != null) {
  10. first = first.next;
  11. second = second.next;
  12. }
  13. second.next = second.next.next;
  14. return dummy.next;
  15. }

4: Go代码

  1. func removeNthFromEnd(head *ListNode, n int) *ListNode {
  2. dummy := new(ListNode)
  3. dummy.Next = head
  4. //倒数第N个节点的前一个节点
  5. preN := dummy
  6. //记录遍历次数
  7. i := 1
  8. for head != nil {
  9. if i > n {
  10. preN = preN.Next
  11. }
  12. head = head.Next
  13. i++
  14. }
  15. //跨过倒数第N个节点
  16. preN.Next = preN.Next.Next
  17. //返回链表的头结点
  18. return dummy.Next
  19. }