Re: [討論] 刷leetcode的語言選擇

看板Soft_Job作者 (Peaceful Warrior)時間3年前 (2021/02/28 13:21), 3年前編輯推噓18(18020)
留言38則, 22人參與, 3年前最新討論串2/2 (看更多)
最近剛好有在指導一些學生練習,可以來回應一下這個問題 一般最常見語言有三個:C, JAVA, Python 也是最容易找到範例 code 的三個語言 各有不同優點,可以看你的狀況選擇 首先,如果未來有一天 有想挑戰比較大平台的演算法競賽 (FB, Google 或其他的線上競賽) C 與 JAVA 會是比較好的選擇 C 就效能王者,JAVA 得利於偉大的 JVM 效能也很扛 而 Python 真的在一些情境下會過慢,搞不好你時間複雜度正確最後還沒過... 加上還有遞迴深度被卡的問題(有些技巧能開大,但總歸是不好用) 另外網路上有聽過一些面試官覺得你都在學習演算法這門斤斤計較效率的學問了 還用 Python 這麼"慢"的語言未免有點好笑 但... 我自己身邊是從沒聽過不給用 Python 解題的...(有版友聽過可以補充) 所以我自己對於目前僅想先入門的人,還是會推薦 Python 寫起來真的硬是可以少別人很多行,又易學,實用性也廣,是個順便學會不吃虧的語言 其特殊的 [] 表示法練熟的話,很多迴圈都省了,也更好懂 當你想題目已經想到頭很痛時,起碼語言上可以讓你舒服一點點 且該有的基本工具,如 map, set, heapq, OrderedDict 等也都還算齊全 Leetcode 上的題基本上寫法對都會過(極少遇到卡 Python 的,出現還會被炎上抗議XD) 另外有個隱形的好處(或壞處?)是 Python 內建大數運算 所以你一開始練習可以不用思考 int, long, double 適用範圍這些事情 就假想數字可以無限大,給他直線幹過去就搞定 當然壞處就是... 你少了這方面的知識,被問到會掛 至於 JAVA 跟 C 比較的話 JAVA 在一般網站開發伺服器比較泛用,C 則是韌體方面較泛用,看你職業選擇 當然,即使不考慮職業,這兩個語言本身也仍然很有學習的價值 不過 C 在函數傳值與傳址的定義上與目前大多主流語言不同 要先把這塊搞清楚,以免變數被傻傻複製好幾次都不知道 而 C 有個很特殊的好處是可以用 typedef & define 創造一堆簡寫給自己用 所以其實是可以寫的簡潔的,但初學者當然不建議這樣搞, 畢竟別人很難看懂 最後,其他常聽到的語言在演算法練習上: Javascript: 新手不推薦,主要少了一些重要的基礎物件與函式庫,得懂得自己造 Ruby: 優缺點跟 Python 類似,但範例 code 遠少於 Python C#: 優缺點跟 JAVA 類似,但同樣範例較少 Go: 我不會寫所以不敢說,等版友補充了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.49.21 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1614489665.A.1BC.html ※ 編輯: BBSealion (1.171.49.21 臺灣), 02/28/2021 13:23:24 ※ 編輯: BBSealion (1.171.49.21 臺灣), 02/28/2021 13:24:41

02/28 13:26, 3年前 , 1F
js可以寫出非常漂亮的程式碼
02/28 13:26, 1F

02/28 13:40, 3年前 , 2F
要漂亮的程式碼的話 感覺Kotlin也行
02/28 13:40, 2F

02/28 13:40, 3年前 , 3F
但沒人會用Kotlin刷
02/28 13:40, 3F

02/28 13:49, 3年前 , 4F
js 不是改善非常多了嗎?
02/28 13:49, 4F

02/28 13:54, 3年前 , 5F
C#不推 語法糖太多 基礎打好再看比較合適
02/28 13:54, 5F

02/28 14:24, 3年前 , 6F
都用Swift刷
02/28 14:24, 6F

02/28 14:24, 3年前 , 7F
我都用js做code jam的XD
02/28 14:24, 7F

02/28 14:26, 3年前 , 8F
蠻推用C++的
02/28 14:26, 8F

02/28 14:57, 3年前 , 9F
效能是js > python, 真的沒有函式可以自己弄一個出來
02/28 14:57, 9F

02/28 15:06, 3年前 , 10F
py能用在leetcode的工具哪個js沒有?
02/28 15:06, 10F

02/28 15:06, 3年前 , 11F
js還被孤狗爸爸優化過 比py快多了
02/28 15:06, 11F

02/28 16:12, 3年前 , 12F
js 沒有 heap
02/28 16:12, 12F

02/28 17:11, 3年前 , 13F
c++刷leetcode比c簡單太多了吧..
02/28 17:11, 13F

02/28 17:54, 3年前 , 14F
哭了 還真的沒有heap
02/28 17:54, 14F

02/28 18:24, 3年前 , 15F
用 Python 打 contest 有時會遇到 top-down DP 不給過但
02/28 18:24, 15F

02/28 18:24, 3年前 , 16F
bottom-up 可以的情況,這點算是少數用 Python 寫 Lee
02/28 18:24, 16F

02/28 18:24, 3年前 , 17F
tcode 的痛點
02/28 18:24, 17F

02/28 18:28, 3年前 , 18F
Py與c++混著用
02/28 18:28, 18F

02/28 18:30, 3年前 , 19F
感謝分享
02/28 18:30, 19F

02/28 19:48, 3年前 , 20F
c++ 寫的好真的難
02/28 19:48, 20F

02/28 22:50, 3年前 , 21F
據Antti Laaksonen寫的Competitive Programmer’s Handboo
02/28 22:50, 21F

02/28 22:51, 3年前 , 22F
k統計,2017年Code Jam的前3000名當中有超過75%都是用C++
02/28 22:51, 22F

02/28 22:51, 3年前 , 23F
寫比賽的
02/28 22:51, 23F

02/28 23:56, 3年前 , 24F
C# 語法糖有些題目秒解效能排名還很前面
02/28 23:56, 24F

02/28 23:57, 3年前 , 25F
要用的話要刻意避免使用語法糖
02/28 23:57, 25F

03/01 08:30, 3年前 , 26F
JavaScript 現在速度和 Java 同等級好嗎 多久沒更新資訊了
03/01 08:30, 26F

03/01 10:55, 3年前 , 27F
沒有要戰 但你對那些不推的語言看起來也沒很熟
03/01 10:55, 27F

03/01 10:57, 3年前 , 28F
真的推的只有c/c++ 其他都各有優缺
03/01 10:57, 28F

03/01 11:20, 3年前 , 29F
範例我覺得也沒什麼意思 刷題刷到要直接複製貼上範例
03/01 11:20, 29F

03/01 11:20, 3年前 , 30F
這題也是白刷了
03/01 11:20, 30F

03/01 11:20, 3年前 , 31F
反而看範例轉譯成別的語言至少每一行都有重新思考
03/01 11:20, 31F

03/01 12:58, 3年前 , 32F
對新手來說,同語言的範例還是滿重要的,當然有一定
03/01 12:58, 32F

03/01 12:58, 3年前 , 33F
程度就不該再依賴語言了。JS 不止沒有 heapq,基本的
03/01 12:58, 33F

03/01 12:59, 3年前 , 34F
queue 都沒有吧?網路上還一堆誤導人用 unshift 實作..
03/01 12:59, 34F

03/01 13:00, 3年前 , 35F
當然自己造一個 queue 並不難,但對新手就是一個額外工
03/01 13:00, 35F

03/01 13:15, 3年前 , 36F
至於版友提到JS寫演算法效能能追上JAVA,我會查查看
03/01 13:15, 36F
※ 編輯: BBSealion (59.120.195.65 臺灣), 03/01/2021 13:16:39

03/02 00:06, 3年前 , 37F
c++
03/02 00:06, 37F

03/02 13:16, 3年前 , 38F
03/02 13:16, 38F
文章代碼(AID): #1WEoX16y (Soft_Job)
文章代碼(AID): #1WEoX16y (Soft_Job)