【算法】删除单链表的倒数第N个结点
来源:互联网 发布:h5网站源码 编辑:程序博客网 时间:2024/06/05 04:48
Description
Given a linked list, remove the nth node from the end of list and return its head. *For example, * Given linked list: 1->2->3->4->5, and n = 2. * After removing the second node from the end, * the linked list becomes 1->2->3->5. *Note: * Given n will always be valid. * Try to do this in one pass.
这是Leetcode中的一道题,剑指offer中是查找到单链表的倒数第N个结点,题目类似。
解题思路
采用两个指针,first和slow,first先后移N个结点,然后slow和first同时向后移动,因为两个指针相差N个结点,所以当first.next==null,slow现在指的就是倒数第N个结点的前驱,所以直接利用slow.next = slow.next.next,删除这个节点。
代码如下:
/** * @ congrisheng * @ 2017-3-13 * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public ListNode removeNthFromEnd(ListNode head, int n){ if(head == null || head.next == null){ return null; } ListNode slow = head; ListNode first = head; for(int i = 0; i < n; i++){ first = first.next; } if(fast == null){ head = head.next; return head; } while(first.next != null){ slow = slow.next; first = first.next; } slow.next = slow.next.next; return slow;}
From《剑指offer》Page13
0 0
- 【算法】删除单链表的倒数第N个结点
- 删除链表中倒数第n个结点
- 删除链表中倒数第n个结点
- 删除链表中倒数第n个结点
- 删除链表的倒数第n个结点
- 删除单链表的倒数第k个结点
- 小程序:删除单链表中倒数第n个结点
- <LeetCode> 题174:删除链表中倒数第n个结点
- leetcodeSubmission Details 删除链表倒数第n个结点
- 删除链表的倒数第n个结点 Remove Nth Node From End of List
- Remove Nth Node From End of List 删除链表的倒数第n个结点
- 删除单链表倒数第n个节点
- 删除单链表的倒数第n个元素
- 删除单链表的倒数第N个节点
- 返回倒数第n个结点的值
- 链表倒数第n个结点
- 单链表操作之删除倒数第k个结点
- 给定单链表的头结点,如何快速的找到倒数的第n个节点?
- 修改数据库字段长度
- 【RMAN】RMAN-05001: auxiliary filename conflicts with the target database
- Oracle学习-day04
- 如何利用GeoIP与ELK(Elasticsearch、Logstash与Kibana)映射用户位置
- 148. Sort List
- 【算法】删除单链表的倒数第N个结点
- Cocos creator 部分分组不碰撞问题
- hdu 1860&&九度1021
- win 10,CentOS7 双系统
- JavaScript-window常用
- 模拟用户登录
- [ASP.NET]采用JQuery静态的修改页面TABLE内容
- Oracle学习-day05
- Xcode 中删除多余的证书