你見(jiàn)過(guò)哪些看似簡(jiǎn)單但卻非常精妙的代碼?
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
❝ 1、樹(shù)狀數(shù)組
樹(shù)狀數(shù)組里的這個(gè),太精妙了,樹(shù)狀數(shù)組使區(qū)間求和復(fù)雜度降低到了log(n),發(fā)明這段代碼的人一定是個(gè)天才,而這個(gè)lowbit恰恰是最精妙的一部分,可以準(zhǔn)確的找到我們需要加的部分,巧妙的利用了計(jì)算機(jī)的位運(yùn)算。 ❝ ❝ 2、紅黑樹(shù)
elisp寫(xiě)的紅黑樹(shù),可以說(shuō)非常經(jīng)典了。 ❝ 3、星星打分
這種實(shí)現(xiàn)方式之所以精妙,是因?yàn)樗昧俗址墓潭J胶?substring 方法的靈活性來(lái)生成不同數(shù)量的星星,而不需要使用循環(huán)或額外的邏輯來(lái)逐個(gè)添加或刪除星星。這種方法簡(jiǎn)潔且高效,特別是在需要頻繁生成星級(jí)評(píng)分表示時(shí)。 然而,這段代碼也有局限性,它假設(shè)評(píng)分總是整數(shù),并且只支持0到5的評(píng)分范圍。如果需要支持小數(shù)評(píng)分或更廣泛的評(píng)分范圍,這段代碼將需要相應(yīng)的調(diào)整。 4、歐幾里得算法
這種遞歸實(shí)現(xiàn)的歐幾里得算法非常簡(jiǎn)潔且高效。它利用了數(shù)學(xué)上的一個(gè)性質(zhì):兩個(gè)整數(shù)的最大公約數(shù)與它們的余數(shù)和較小數(shù)的最大公約數(shù)相同。即 gcd(a, b) = gcd(b, a % b)。 5、快速冪
用于高效地計(jì)算 b 的 n 次方。快速冪算法特別適用于計(jì)算大冪次的情況,因?yàn)樗鼘绱蔚挠?jì)算復(fù)雜度從 O(n) 降低到 O(log n)。 6、并查集
并查集(Union-Find)數(shù)據(jù)結(jié)構(gòu)中的 find 函數(shù)的簡(jiǎn)潔實(shí)現(xiàn)。 遞歸查找:find 函數(shù)通過(guò)遞歸的方式查找元素 x 的根節(jié)點(diǎn)。遞歸會(huì)在元素與其父節(jié)點(diǎn)不同時(shí),繼續(xù)查找父節(jié)點(diǎn)的父節(jié)點(diǎn),直到找到一個(gè)元素其父節(jié)點(diǎn)是它自己的元素,即根節(jié)點(diǎn)。 路徑壓縮:代碼中的三元運(yùn)算符 ?: 實(shí)現(xiàn)了路徑壓縮技術(shù)。當(dāng) x 不是其根節(jié)點(diǎn)時(shí)(即 x != parent[x]),find 函數(shù)會(huì)調(diào)用自身并傳入 parent[x] 作為參數(shù)。在遞歸返回的過(guò)程中,每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)指針都被更新為最終的根節(jié)點(diǎn),這樣可以減少后續(xù)查找操作的深度。 該文章在 2024/7/24 23:12:37 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |