博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode19 Remove Nth Node From End of List
阅读量:5377 次
发布时间:2019-06-15

本文共 1319 字,大约阅读时间需要 4 分钟。

题意:

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. Try to do this in one pass. (Easy)

分析:题目虽然是easy,但是用one pass做起来还是包含几个链表常用的手法的,有参考价值;

链表算法上没有什么难的,就是代码上仔细,再熟悉几种处理方法即可。

1.Two pointers。 利用快慢指针,快指针先走n步,然后一起走,快的下一步到终点了,慢的到达要删除的前一位;

2. dummy node。 凡是head位置可能被删掉,返回出现问题,用dummy node处理返回问题。

代码:

1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode* removeNthFromEnd(ListNode* head, int n) {12         ListNode dummy(0);13         dummy.next = head;14         head = &dummy;15         ListNode* chaser = head;16         ListNode* runner = head;17         for (int i = 0; i < n; ++i) {18             runner = runner -> next;19         }20         while (runner -> next != nullptr) {21             runner = runner -> next;22             chaser = chaser -> next;23         }24         ListNode* temp = chaser -> next;25         chaser -> next = chaser -> next -> next;26         delete temp;27         return dummy.next;28     }29 };

 

转载于:https://www.cnblogs.com/wangxiaobao/p/5742904.html

你可能感兴趣的文章
C# action跳转
查看>>
orm分组,聚合查询,执行原生sql语句
查看>>
C#读写Accsess示例一
查看>>
锁的类型和兼容性
查看>>
C#网络编程之服务客户模式在控制台下的简单交互
查看>>
编译 php-memcache 扩展时提示Cannot find autoconf
查看>>
Linux进程状态
查看>>
炎炎夏日需要一个清凉的地 - 自制水冷系统(八 系统设计篇)
查看>>
Debian 无线网卡驱动问题
查看>>
使用ajax解析后台json数据时:Unexpected token o in JSON at position 1
查看>>
每个程序员都应读的书(转)
查看>>
Http报文解析
查看>>
博雅页面
查看>>
Treeset的两种排序方法(自然排序和比较器排序)
查看>>
MS Access 按时间段查询数据
查看>>
算法待补全
查看>>
.Net4.0 任务(Task)
查看>>
Part 1 从NHibernate认识ORM
查看>>
TypeScript和JavaScript的一些小技巧记录
查看>>
初学数据结构四
查看>>