一、Algorithm
题目:删除链表的倒数第n个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
solution:
先遍历链表,计算链表长度l,倒数第n个节点就是顺数第(l-n+1)个节点
C++代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
int iCount = 0, i = 1;
ListNode* pr = head;
ListNode* tmp = NULL;
//遍历,计算链表长度
while(pr != NULL)
{
iCount++;
pr = pr->next;
}
pr = head;
//删除头节点
if((iCount-n) == 0)
{
head = pr->next;
return head;
}
//删除第iCount-n+1个节点
while(i < (iCount-n))
{
i++;
pr = pr->next;
}
tmp = pr->next;
pr->next = tmp->next;
return head;
}
};
二、Review
原文路径:https://jvns.ca/blog/2016/07/03/debugging-tools-i-love/
点评:文章介绍了作者最喜欢的5种Linux调试工具,分别是strace、dstat、tcpdump+wireshark、perf。作者分别介绍了每种工具适合场景和作用。
strace:能够跟踪系统调用;
dstat:能够显示每秒有多少数据被发送到网络上、有的多少数据被写到磁盘上;
tcpdump+wireshark:监控网络流量,帮助理解网络是如何运作的,例如:IP、TCP、HTTP之间的区别是什么?网络包到底是什么?
Perf:对于C程序,Perf可以告诉你程序在哪个函数中花费的时间最长
opensnoop:可以显示你的电脑上哪些文件是打开着的。
三、Tip
git使用小技巧
若觉得先git add把文件加入暂存区再git commit提交太麻烦,可通过git commit -am 一步搞定
四、Share
https://mp.weixin.qq.com/s/6VRkbkGHYsEAPvTSd3KXoQ