leetcode Java 2ms 删除链表倒数第N个节点

给定一个链表,删除链表的倒数第 个节点,并且返回链表的头结点。

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.

当删除了倒数第二个节点后,链表变为 1->2->3->5.

说明:

给定的 n 保证是有效的。

采取暴力法:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        if(head==null) return head;
        ListNode dum = new ListNode(0);
        ListNode cur = dum;
        int len=0;
        cur.next=head;
        while(head!=null)
        {
          head=head.next;
          len++;
        }
        for(int i=1;i<=len-n;i++)    //记得循环次数问题  初始cur在head前一位
                cur=cur.next;
        cur.next=cur.next.next;   //切记不能写成cur=cur.next.next   只是移动  并没有指向
        return dum.next;
    }
}

leetcode Java 2ms 删除链表倒数第N个节点_第1张图片

你可能感兴趣的:(Leecode,笔试,Leetcode)