最后一遍-L19. Remove Nth Node From End of List

Given the head of a linked list,

remove the nth node from the end of the list

and return its head.

Example 1:

Input: head = [1,2,3,4,5], n = 2
Output: [1,2,3,5]

Example 2:
Input: head = [1], n = 1
Output: []

Example 3:
Input: head = [1,2], n = 1
Output: [1]


Constraints:
* The number of nodes in the list is sz.
* 1 <= sz <= 30
* 0 <= Node.val <= 100
* 1 <= n <= sz


Follow up: Could you do this in one pass?

NOTE:链表的经典的问题

public class Solution {
        /**
         * 1-->2-->3-->4-->5, 2
         * 
         * The number of nodes in the list is sz.
         * 1 <= sz <= 30
         * 0 <= Node.val <= 100
         * 1 <= n <= sz
         * n 小于head的长度
         * */
        public static ListNode removeNthFromEnd(ListNode head, int n) {
                if(n==0) return head;

                ListNode cur = head;
                ListNode pre = head;
                while(n >0){
                        cur=cur.next;
                        n--;
                }

// 注意边界的情况
                if(cur==null)return head.next;
                while(cur.next != null){
                        cur=cur.next;
                        pre=pre.next;
                }

                if(pre.next != null){
                        pre.next=pre.next.next;
                }
                return head;
        }
}

Powered by andiHappy and Theme by AndiHappy