ARTS-week33

Algorithms

Delete Node in a Linked List
思路: 将待删除节点的下一个节点的值赋给待删除节点,然后删除下一个节点。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void deleteNode(ListNode* node) {
ListNode* ptr = node->next;
node->val = ptr->val;
node->next = ptr->next;
delete ptr;
ptr = NULL;
}
};

Valid Anagram
思路: 变形词就是两个单词中每个字母出现的次数相同,使用一个计数器,记录第一个单词中每个字母出现的次数,遍历第二个单词,再减去相应字母的出现次数,如果某个字母的计数器不为0了,就说明某个字母出现的次数不一样,也就不是变形词了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public:
bool isAnagram(string s, string t) {
if (s.size() != t.size()) {
return false;
}

const int count = 26;
int map[count];
memset(map, 0, count * sizeof(int));

for (int i = 0; i < s.size(); i++) {
map[s[i] - 'a']++;
map[t[i] - 'a']--;
}

for (int i = 0; i < count; ++i) {
if (map[i] != 0) {
return false;
}
}
return true;
}
};

在上面的解法之前,使用过这种方法,Leetcode显示需要40ms,实在是太慢了。。。

1
2
3
4
5
6
7
8
9
10
11
class Solution {
public:
bool isAnagram(string s, string t) {
if (s.size() != t.size()) {
return false;
}
sort(s.begin(), s.end());
sort(t.begin(), t.end());
return s == t;
}
};

Review

本周阅读英文文章 Extremely Imbalanced data — Fraud detection

Technique

UNP 关于SO_KEEPALIVE套接字选项

给一个TCP套接字设置保存选项后,如果2小时内在该套接字的任一方向上都没有数据交换,TCP就自动给对端发送一个保持存活探测分节(keep-alive probe)。这是一个对端必须响应的分节,它会导致以下三种情况之一:
1)对端以期望的ACK响应。应用进程得不到通知(因为一切正常)。在又经过无动静的2小时后,TCP将发出另一个探测分节;
2)对端以RST响应,它告知本端TCP: 对端已崩溃且已重新启动。该套接字的待处理错误被置为ECONNRESET,套接字本身被关闭;
3)对端对保持存活探测分节没有任何响应。源自Berkeley的TCP将另外发送8个探测分节,两两相隔75s,试图得到一个响应。TCP在发出第一个探测分节后11份15秒内若没有得到任何响应则放弃。

  • 问题: 时间参数是否可修改?
    必须注意大多数内核是基于整个内核维护这些时间,而不是基于每个套接字维护的,因为如果把无活动周期从2小时修改为15分钟,那么将影响到该主机上所有开启了本选项的套接字。

那么看一下Ubuntu 16.04中的相关参数设置:

1
2
3
4
5
6
$ cat /proc/sys/net/ipv4/tcp_keepalive_time
7200
$ cat /proc/sys/net/ipv4/tcp_keepalive_probes
9
$ cat /proc/sys/net/ipv4/tcp_keepalive_intvl
75

可以看出参数值跟书中的描述有所不同~

Share

使用tree生成HTML形式的目录树:

1
$ tree PATH -H http://localhost -o output.html

PATH替换为真实路径,也可以用.;localhost替换为适合存放输出文件的URL

0%