1. 程式人生 > 實用技巧 >19. 刪除連結串列的倒數第N個節點-連結串列-中等難度

19. 刪除連結串列的倒數第N個節點-連結串列-中等難度

問題描述

給定一個連結串列,刪除連結串列的倒數第n個節點,並且返回連結串列的頭結點。

示例:

給定一個連結串列: 1->2->3->4->5, 和 n = 2.

當刪除了倒數第二個節點後,連結串列變為 1->2->3->5.
說明:

給定的 n保證是有效的。

進階:

你能嘗試使用一趟掃描實現嗎?

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list

解答

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 
*/ //定義一個rear節點,在head的基礎上,rear後移n位。 class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode rear = head, p = head; while(n--!=0){ if(rear.next!=null)rear = rear.next; else return head.next; } while(rear.next!=null){ p
= p.next; rear = rear.next; } if(p.next!=null)p.next = p.next.next; return head; } }