❝ 🎈在編程的世界里,簡潔的代碼往往隱藏著深邃的智慧。一起來看看那些看似簡單,實則精妙絕倫的代碼片段,體會編程語言的優(yōu)雅與力量。
1、樹狀數(shù)組 int lowbit(int x) { return x&-x; }
樹狀數(shù)組里的這個,太精妙了,樹狀數(shù)組使區(qū)間求和復雜度降低到了log(n),發(fā)明這段代碼的人一定是個天才,而這個lowbit恰恰是最精妙的一部分,可以準確的找到我們需要加的部分,巧妙的利用了計算機的位運算。
❝ 我一直覺得線段樹,樹分治這幾個算法的設計都很精妙
❝ 當初學樹狀數(shù)組的,看到這個函數(shù)也驚嘆了許久,甚是巧妙
2、紅黑樹 (defun rbt-balance (tree ) "Balance the rbtree list TREE." (pcase tree (`(B (R (R ,a ,x ,b) ,y ,c) ,z ,d) `(R (B ,a ,x ,b) ,y (B ,c ,z ,d))) (`(B (R ,a ,x (R ,b ,y ,c)) ,z ,d) `(R (B ,a ,x ,b) ,y (B ,c ,z ,d))) (`(B ,a ,x (R (R ,b ,y ,c) ,z ,d)) `(R (B ,a ,x ,b) ,y (B ,c ,z ,d))) (`(B ,a ,x (R ,b ,y (R ,c ,z ,d))) `(R (B ,a ,x ,b) ,y (B ,c ,z ,d))) (_ tree))) (defun rbt-insert- (x s) "Auxilary function of rbt-insert." (pcase s (`nil `(R nil ,x nil)) (`(,color ,a ,y ,b) (cond ((< x y) (rbt-balance `(,color ,(rbt-insert- x a) ,y ,b))) ((> x y) (rbt-balance `(,color ,a ,y ,(rbt-insert- x b)))) (t s))) (_ (error "Expected tree: %S" s)))) (defun rbt-insert (x s) "Insert S to rbtree X." (pcase (rbt-insert- x s) (`(,_ ,a ,y ,b) `(B ,a ,y ,b)) (_ (error "Internal error: %S" s))))
elisp寫的紅黑樹,可以說非常經(jīng)典了。
❝ 簡單的是elisp,精妙的是紅黑樹
3、星星打分 function getRating (rating ) { if (rating > 5 || rating < 0 ) throw new Error ('數(shù)字不在范圍內' ); return '★★★★★☆☆☆☆☆' .substring(5 - rating, 10 - rating ); }
這種實現(xiàn)方式之所以精妙,是因為它利用了字符串的固定模式和 substring 方法的靈活性來生成不同數(shù)量的星星,而不需要使用循環(huán)或額外的邏輯來逐個添加或刪除星星。這種方法簡潔且高效,特別是在需要頻繁生成星級評分表示時。
然而,這段代碼也有局限性,它假設評分總是整數(shù),并且只支持0到5的評分范圍。如果需要支持小數(shù)評分或更廣泛的評分范圍,這段代碼將需要相應的調整。
4、歐幾里得算法 function gcd (a, b ) { return b ? gcd(b, a % b) : a; }
這種遞歸實現(xiàn)的歐幾里得算法非常簡潔且高效。它利用了數(shù)學上的一個性質:兩個整數(shù)的最大公約數(shù)與它們的余數(shù)和較小數(shù)的最大公約數(shù)相同。即 gcd(a, b) = gcd(b, a % b)。
5、快速冪 function fastPower (b, n ) { if (n === 0 ) return 1 ; const result = fastPower(b, Math .floor(n / 2 )); return n % 2 === 0 ? result * result : b * result * result; }
用于高效地計算 b 的 n 次方??焖賰缢惴ㄌ貏e適用于計算大冪次的情況,因為它將冪次的計算復雜度從 O(n) 降低到 O(log n)。
6、并查集 int find (int x) { x==parent[x]?:find(parent[x]); }
并查集(Union-Find)數(shù)據(jù)結構中的 find 函數(shù)的簡潔實現(xiàn)。
遞歸查找:find 函數(shù)通過遞歸的方式查找元素 x 的根節(jié)點。遞歸會在元素與其父節(jié)點不同時,繼續(xù)查找父節(jié)點的父節(jié)點,直到找到一個元素其父節(jié)點是它自己的元素,即根節(jié)點。
路徑壓縮:代碼中的三元運算符 ?: 實現(xiàn)了路徑壓縮技術。當 x 不是其根節(jié)點時(即 x != parent[x]),find 函數(shù)會調用自身并傳入 parent[x] 作為參數(shù)。在遞歸返回的過程中,每個節(jié)點的父節(jié)點指針都被更新為最終的根節(jié)點,這樣可以減少后續(xù)查找操作的深度。
該文章在 2024/7/24 23:12:37 編輯過