看板 Prob_Solve 關於我們 聯絡資訊
https://leetcode.com/problems/move-zeroes/description/ 最直覺的方法是弄一個像這樣的 custom comparater: /// 0 最大,其他通通相等 fn cmp(lhs: N, rhs: N) -> Ord where N: Num { if rhs == 0 { Ord::LT } else if lhs == 0 { Ord::GT } else { Ord::EQ } } 然後用任何 stable sort 排一下就好了 可是小弟菜逼八,在 solutions 和 discussion 裡面都沒看到相關討論 請問這個做法是有什麼毛病嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 174.112.166.163 (加拿大) ※ 文章網址: https://www.ptt.cc/bbs/Prob_Solve/M.1571906291.A.2CC.html
CoNsTaR: 剛剛用 C++ 在 Leetcode AC 了10/24 17:06
CoNsTaR: https://pastebin.com/UfkFiWnr10/24 17:06
CoNsTaR: 看到 c++ stable_sort 的 discussion 了,抱歉眼殘10/24 17:30
ckc1ark: 常見的stable sort其實都不算in-place10/24 23:51
ckc1ark: 這題的follow-up就是分<0 和>=0 兩邊都要stable10/24 23:55
非零都相等應該不論 > 或 < 零都是 stable 才對? 要是再加一條零等於零的話 = 應該也會是 stable
bibo9901: 因為sort要O(nlgn) 但這題只需要O(n)?10/25 01:25
請問陣列裡只有0(零)與1(非零)兩種東西的話還會是 nlgn 嗎 我用 Rust 的 AC runtime 0ms,space 2.7mb,照理來講不會有這個效能吧? ※ 編輯: CoNsTaR (174.112.166.163 加拿大), 10/25/2019 08:35:06
FRAXIS: C++ 不能用 partition 直接解嗎?10/25 10:54
FRAXIS: comparison-based sort 就算輸入只有 0 和 1 應該都n lg n10/25 10:54
FRAXIS: 就看 library 實作有沒有特別對這種 case 最佳化10/25 10:55
partition 的確更好! 不解的是 Rust 的效能,一樣的演算法,C++ 跑了 16ms/9.4MB,為什麼 Rust 可以 0ms/ 2.7MB... ※ 編輯: CoNsTaR (174.112.166.163 加拿大), 10/25/2019 18:43:04
CoNsTaR: 我 submitted 的 Rust 10/25 18:53
CoNsTaR: https://ideone.com/0NGwpX 10/25 18:53
firejox: 我記得c/c++的優化好像有拿掉過 10/26 15:28