ARST打卡第155周[155/521]-身心健康比编程技术更重要,跳出小镇做题家思维陷阱

Algorithm

lc868_二进制间距

获取bit位的每一位n & -n,判断距离

之前富途面试考过,我当时为了简单,用了一个数组存,看着方便明了,但是面试官get不到我的点,他只想看到我用题解的方法…挺无语的,我这个方法其实比题解的方法还快一点,循环次数更少

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class Solution {
public:
//递归判断一个数是2的多少次方
int log2(int value) {
if (value == 1) {
return 0;
}
return 1 + log2(value >> 1);
}

int binaryGap(int n) {
int pre_num = 0;
int num = 0;
int ans = 0;
while (n) {
// 获取最低位
num = n & -n;
n -= num;
if (pre_num) {
ans = max(ans, log2(num / pre_num));
}
pre_num = num;
}
return ans;
}
};

// 题解的直接移位也是可以的
class Solution_ans {
public:
int binaryGap(int n) {
int last = -1, ans = 0;
for (int i = 0; n; ++i) {
if (n & 1) {
if (last != -1) {
ans = max(ans, i - last);
}
last = i;
}
n >>= 1;
}
return ans;
}
};

Review

BTHREAD_NOSIGNAL may can never be scheduled

搭配bthread_flush()使用,并且在有可能全部线程都被IO阻塞的情况下,创建冗余的线程,以此来解决所有线程都锁住,没有线程来唤醒的情况。

Tips

Go语言高级编程

建议使用golang,哈哈,因为如下: 主要因为我菜,记C++新特性老是记不太住

Go语言最初由Google公司的Robert Griesemer、Ken Thompson和Rob Pike三个大牛于2007年开始设计发明,设计新语言的最初的洪荒之力来自于对超级复杂的C++11特性的吹捧报告的鄙视,最终的目标是设计网络和多核时代的C语言。

Share

思考生活的重点,身心健康比编程技术更重要,跳出小镇做题家思维陷阱

再次复习之前推友对于小镇做题家的思维的反思,然后觉得生活的重点是: 身心健康,关爱亲友,做我想做,爱我所做

分享别人对小镇做题家的思考

Shaw Xia
@xiaxiangzhou
A thread: 1/n. 小镇做题家出身的我,在很长的时间里被这个成长背景带来的思想糟粕困扰。这些年靠自己的反思和努力渐渐克服了一些,今天和几个朋友聊起这个话题,总结一下来博大家一笑

2/n. 第一点糟粕就是过分强调竞争。第一个行为就是敝帚自珍和不想合作,总以为赢得竞争的关键是掌握一些别人不知道的小把戏,小心的保护这些小把戏,靠它们默默的赢别人。这个行为首先让我少了很多朋友和以此带来的快乐。然后,它其实让我更加失败,因为真的成功永远是和优秀的人合作,一起前进。

3/n. 第二个过分强调竞争带来的行为就是对“成功”的过于敏感。凡是听到不了解或新的事物。第一反应就是别人又要“成功”了。要么,我就下意识的反对,把自己的头埋进沙子,丢掉了开放和好奇的心态。要么,我就下意识的fomo,失去了理性得思考。每个人都有自己的路,保持开放,好奇和理性,拥抱别人的成功

4/n. 第二个糟粕就是急功近利。什么火就想做什么,什么快就想做什么,绞尽脑汁想怎么利用规则的漏洞。最终想要的其实是考个高分,而不是学习本身。首先这让我失去了生活的方向和意义,我曾经有几年为了自己升职不够快而万分痛苦,满门心思刷规则让自己迎合升职标准。

5/n. 对成长学习本身失去耐性,对朋友亲人变得急躁不耐烦。当我走出来的时候才发现这一切多么的荒谬。这个心态让我人生偏离了健康和美好的轨迹,并且也没有让我更快的得到我想要的东西。人生很短,找一个自己感兴趣的路,慢慢的走下去,专注于成长,忽略掉噪音,爱你的家人和朋友,就是一条最好的路