19. 删除链表的倒数第N个节点


19. 删除链表的倒数第 N 个节点

难度中等 1064
给定一个链表,删除链表的倒数第 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() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    // 借鉴 org
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode dummy=new ListNode(0,head);//
        ListNode cur=dummy;
        int length=getLength(head);
        for(int i=1;i<length+1-n;i++)&#123;// 1
            cur=cur.next;
        &#125;
        cur.next=cur.next.next;
        return dummy.next;//
    &#125;
    public int getLength(ListNode head)&#123;
        int i=0;
        while(head!=null)&#123;
            head=head.next;
            i++;
        &#125;
        return i;
    &#125;
&#125;

文章作者:   future
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 future !
 上一篇
206. 反转链表 206. 反转链表
206. 反转链表难度简单 1288反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链
2020-10-20 future
下一篇 
70. 爬楼梯 70. 爬楼梯
70. 爬楼梯难度简单 1285假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。
2020-10-18 future
  目录