C++刷leetcode几点注意事项

  1. size() 返回的无符号数
    大概的场景如下:
int maxLen = -1
if(s.size() > maxLen) {
    maxLen = s.size();
}

由于有符号数和无符号数比较时,会当做无符号数比较,所以-1是 \(2^{31}-1\)
所以记得加上强制类型转换

  1. string类型参数,未修改是记得加引用

例如Leetcode 472. 连接词,未加引用会超时,而加上引用就176ms过

int query(Node* p, string& str, int pos) {    // 记得加引用

因为这题中,最多有1e5个字符串,每个字符串可能调用size次query,所有大量的拷贝会导致超时

  1. 统计是否出现而不是次数是,尽量用unordered_set
    unordered_map比unordered_set慢,

例如 Leetcode 面试题 17.13. 恢复空格,用unordered_map花了1040ms,而unordered_set只用了204ms

上一篇:763. 划分字母区间(滑动窗口,贪心)


下一篇:c++学习笔记(五)—— IO、顺序容器和关联容器