自己寫過的題目紀錄,不一定會是最佳解,
而且有一部份受個人習慣影響,像是會很想避免使用hashMap,
主要只是想留存一些程式與解題思路,方便以後回憶算法。
https://github.com/ikatyang/emoji-cheat-sheet
裡面的ICON非常便利使用,呼叫API對應的ICON就會出現
簡單來說,C++在IO方面效率低下,是因為他內部為了兼容C而採取的保護措施
而保護措施預設是開啟的,只要關掉IO的執行時間就會飛快提升,leetcode也能進一步加快執行效率
以下就是關閉保護措施的程式碼:
ios_base::sync_with_stdio(false);
cout.tie(NULL);
cin.tie(NULL);
ios_base::sync_with_stdio
這個函數是一個"是否兼容stdio"的開關,C++為了兼容C,保證程式在使用了std::printf和std::cout的時候不發生混亂,將輸出流綁到了一起
tie
tie是將兩個stream綁定的函數,空參數的話則返回當前的輸出流指標
在默認的情況下cin綁定的是cout,每次執行 << 操作符的時候都要調用flush
這樣會增加IO負擔,可以通過tie(0)(0表示NULL)來解除cin與cout的綁定,進一步加快執行效率
C++中不同方式串接字串效率會有明顯的不同,詳細請看->0038_README
//std::string next, str;
//int same;
// 1. this way spend time: 0, 6, 7 ms
next +='0'+same;
next += str[s];
// 2. this way spend time: 18, 21, 23 ms
next += to_string(same) + str[s];
// 3. this way spend time: 113, 120, 120 ms
next = next + to_string(same) + str[s];