范】leetcode 算法題)
一、編輯器 / 編譯器認(rèn)知刷題不需要懂工程搭建只需要記住力扣在線判題是云端標(biāo)準(zhǔn)化編譯環(huán)境和本地 VS/Dev 運行結(jié)果存在細(xì)微差異很多本地不報錯的代碼線上會出問題下文全部是抹平差異的關(guān)鍵規(guī)則。二、編譯 / 運行 / 調(diào)試 刷題真正用途編譯報錯語法、符號、頭文件、參數(shù)問題硬性錯誤運行報錯數(shù)組越界、空指針、棧溢出、內(nèi)存超限調(diào)試算法刷題唯一找錯手段只靠肉眼看代碼,永遠(yuǎn)突破不了中等題、復(fù)雜模擬題。三、刷題五大高階禁忌1.禁止局部開大數(shù)組棧溢出元兇2.禁止無符號數(shù)與 int 直接比較隱性邏輯錯誤3.禁止 int 承接大數(shù)累加、乘積靜默溢出不報錯但答案錯4.禁止傳參不寫引用大數(shù)據(jù)必 TLE5.禁止默認(rèn)初始化變量刷題局部變量臟數(shù)據(jù)導(dǎo)致隨機(jī) WA四、刷題最關(guān)鍵全局變量 vs 局部變量局部變量函數(shù)內(nèi)存儲在棧內(nèi)存空間極小不支持大數(shù)組、大數(shù)據(jù)容器不會自動清零殘留隨機(jī)垃圾值全局變量函數(shù)外存儲在堆內(nèi)存空間極大刷題可隨意開 1e6 數(shù)組默認(rèn)自動初始化為 000遞歸、多測試用例場景極其穩(wěn)定刷題鐵律大數(shù)據(jù)、數(shù)組、DP 表、緩存變量全部全局定義五、力扣高頻隱性 BUG 知識點1. 無符號長度坑vector.size()、string.length() 的返回值為 unsigned int無符號整型無符號數(shù)與普通 int 混合運算時整體會強制轉(zhuǎn)為無符號類型負(fù)數(shù)會溢出變成極大正數(shù)經(jīng)典錯誤示例i nums.size() - 2當(dāng)數(shù)組長度不足 222 時nums.size()-2 變成超大正數(shù)下標(biāo)越界穩(wěn)妥寫法強制轉(zhuǎn)為普通整型 (int)(nums.size())。2. 運算符優(yōu)先級隱性坑位運算 、|、、 的優(yōu)先級低于加減運算3. 數(shù)據(jù)溢出靜默報錯int 數(shù)值極限約 2×1092×10?2×109力扣區(qū)間累加、數(shù)值相乘等題型極易超出范圍溢出不會拋出報錯、程序不會崩潰只會篡改最終答案隱蔽性極強刷題規(guī)范累加、乘積、極值計算統(tǒng)一使用 long long 類型。4. 傳參拷貝超時元兇vector、string 等容器直接傳參時會完整拷貝一份數(shù)據(jù)大數(shù)據(jù)場景會嚴(yán)重超時刷題通用標(biāo)準(zhǔn)寫法只讀參數(shù)搭配 const 引用格式示例Cfunc(const vectorint nums)5. 局部變量未初始化引發(fā)隨機(jī) WA全局變量會自動初始化為 000函數(shù)內(nèi)局部變量是隨機(jī)垃圾值大量題目出現(xiàn) “樣例正常、復(fù)雜用例答案錯亂”根源就是數(shù)組、變量未手動初始化清零。六、單文件刷題 / 工程開發(fā) 思維分割力扣、競賽刷題純單文件思維無需頭文件保護(hù)、無需多文件架構(gòu)追求極致簡潔、運行速度、調(diào)試便捷工程多文件規(guī)則完全不適用刷題場景新手不要混淆兩套邏輯。七、正確刷題進(jìn)階路線放棄基礎(chǔ)語法糾結(jié)吃透刷題隱性規(guī)則熟練斷點調(diào)試定位數(shù)組越界、邏輯誤差、溢出問題中等題型歸類刷題積累模板化代碼針對性規(guī)避超時、溢出、無符號坑逐步攻克遞歸、DFS、DP、雙指針進(jìn)階題型https://leetcode.cn/discuss/post/4006510/gan-huo-suan-fa-shua-ti-bi-bei-yin-xing-t02n0https://leetcode.cn/discuss/post/4006510/gan-huo-suan-fa-shua-ti-bi-bei-yin-xing-t02n0