將數組分成和相等的三個部分,以及maven報錯“找不到或無法加載主類”

這兩個確實是風馬牛不相及的東西,但是在等待SQL腳本運行的時候做一道算法題,似乎也沒什麼問題(笑)。

先說maven的事情。因爲是前端,平時不寫Java,遇到這個熟悉的報錯居然有點不知所措……用的是IDEA,檢查project structure之後發現沒有問題,然後看看target裏生成的class,發現沒有對應的class文件,也就是說沒build成功,也不知道爲啥。maven clean之後重新再來,就恢復正常了。


然後說這個題。將數組分成和相等的三個部分,本來是一道很簡單的題,思路也很清晰,就是找兩個下標,然後每個部分都是n / 3,但我想說的是兩個事情:

第一個是儘量不要循環嵌套。想想也知道,嵌套的複雜度是O(nk),並列是O(kn)。這次我就是傻了吧唧的嵌套循環,然後超時了……我覺得可能是受兩數之和那道題的影響,覺得通過第一層循環就可以把題目轉化成兩數之和那個題,但是並沒有這麼複雜。

第二個是之前在網上看到一個處理cin的函數,據說能大幅提高I/O效率,從而加快LeetCode的運行速度:

static const auto _ = []() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    return nullptr;
}();

說實話此前我一直嗤之以鼻,覺得這種東西怎麼可能有用,然後今天試了一下,發現好像真的有用……當場打臉。加這個之前,運行時間是64ms,加了之後變成了32ms,我都驚了,這也太明顯了吧。感覺對那種大量I/O的題目效果比較明顯,比如這個題就有一個長達幾屏幕的數組。

具體解釋就不放了,網上有很多,主要是使用方法,加在class前面就行:

static const auto _ = []() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    return nullptr;
}();

class solution {
    // 題目內容
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章