當我們在用 C++ 解 LeetCode 的題目時,如果你覺得你的演算法已經很極致了,但是時間卻還是比別人慢,這時可能就是因為測資比較龐大,導致 I/O 需要花比較多的時間。而使用 C++ 解題的話,預設會使用 cin 來做測資的輸入,但是在使用 cin/cout 時,由於緩存及一些其他的問題,速度會比 scanf/printf 來的慢,所以如果是在程式競賽的時候,通常我們會使用 scanf/printf 來代替 cin/cout。但是在做 LeetCode 的題目時,LeetCode 會自動幫我們輸入測資,而它輸入的方法就是使用 cin,所以我們可以自己添加以下代碼,使得 cin/cout 的速度能和 scanf/printf 一樣快。

1
2
3
4
5
6
7
8
// fast IO
static auto __ = []()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
return 0;
}();

只要把它添加在最前面即可,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// fast IO
static auto __ = []()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
return 0;
}();
class Solution {
public:
int findJudge(int N, vector<vector<int>>& trust) {

}
};

至於原理的話我現在也還不是很懂,等以後懂了再來補唄。