是的,现在api.js成为模块啦!但是我改了下名字,现在他叫restful-proxy,因为我实际上是对RESTful风格的API进行封装,而且用了Proxy,本来是想叫做restful.js的,无奈这个名字已经有人用了(虽然万年没更新,而且也没有我的抽象)。

因为大多数题目的字符串都是小写字母,所以就按照这个设计了,共26个英文字母,每个节点占用26个char。

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
class TrieNode {
public:
array<TrieNode *, 26> node;
TrieNode() : node({nullptr}) {}
void insert(string &s) {
TrieNode *ptr = this;
for (auto c: s) {
c -= 'a';
if (ptr->node[c] == nullptr) {
ptr->node[c] = new TrieNode;
}
ptr = ptr->node[c];
}
}
bool find(string &s) {
TrieNode* ptr = this;
for (auto c: s) {
c -= 'a';
if (ptr->node[c] == nullptr) {
return false;
} else {
ptr = ptr->node[c];
}
}
return true;
}
};

两个小时,三道题,第二题实在是粗心了,正确率应该能提到100%的,忘记对结果进行特判。

结果

A题

第一题可以选择中文或者英文题面,不过题目好像不太一样,我做的中文题。

阅读全文 »

总之是闯了大祸,好在最后数据都没事。主要问题是我对LVM操作不熟练,以及对文件系统和磁盘没有比较清晰的认识,具体来说就是我以为LVM在进行lvresize时会自动处理文件系统,这当然是错误的,文件系统应该使用resize2fs命令来调整,LVM管理的是块设备,不会处理文件系统上的问题。

阅读全文 »

与时髦的应用层码农不同,我们这些嵌入式码农在写单片机程序的时候大多使用上古的Keil,不得不说,Keil确实好用,编译、调试都可以一键完成,但只提供Windows版本,而且界面还停留在上个世纪,也没有自动补全等现代IDE的功能。

自从前段时间换了MacBook Pro之后我就基本上用它来干活了,虚拟机跑Keil实在是得不偿失,更换嵌入式开发环境在所难免。

阅读全文 »

题目

Alice 和 Bob 在做游戏。有一个长度为$n$的正整数序列,Alice 先手,两人轮流操作。Alice 需要删掉一个非空连续子段,子段和为奇数;Bob 需要删掉一个非空连续子段,子段和为偶数。删除子段后左右两段拼接起来形成新的序列。不能操作的人输。如果两个人都足够聪明,那么谁会获胜?

阅读全文 »

在写前端项目的时候总免不了要调用后端提供的接口,比如POST /user/login,比较传统的方法就是使用XHR。不过,ES6引入了Promise,ES7引入了async/await,使得我们可以更优雅地完成异步操作,于是axios隆重登场(其实我个人并没有用过axios)。

阅读全文 »