Re: [討論] 刷leetcode的語言選擇
看板Soft_Job作者BBSealion (Peaceful Warrior)時間3年前 (2021/02/28 13:21)推噓18(18推 0噓 20→)留言38則, 22人參與討論串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
02/28 13:26, 1F
推
02/28 13:40,
3年前
, 2F
02/28 13:40, 2F
→
02/28 13:40,
3年前
, 3F
02/28 13:40, 3F
推
02/28 13:49,
3年前
, 4F
02/28 13:49, 4F
推
02/28 13:54,
3年前
, 5F
02/28 13:54, 5F
推
02/28 14:24,
3年前
, 6F
02/28 14:24, 6F
推
02/28 14:24,
3年前
, 7F
02/28 14:24, 7F
推
02/28 14:26,
3年前
, 8F
02/28 14:26, 8F
→
02/28 14:57,
3年前
, 9F
02/28 14:57, 9F
推
02/28 15:06,
3年前
, 10F
02/28 15:06, 10F
→
02/28 15:06,
3年前
, 11F
02/28 15:06, 11F
推
02/28 16:12,
3年前
, 12F
02/28 16:12, 12F
推
02/28 17:11,
3年前
, 13F
02/28 17:11, 13F
推
02/28 17:54,
3年前
, 14F
02/28 17:54, 14F
推
02/28 18:24,
3年前
, 15F
02/28 18:24, 15F
→
02/28 18:24,
3年前
, 16F
02/28 18:24, 16F
→
02/28 18:24,
3年前
, 17F
02/28 18:24, 17F
→
02/28 18:28,
3年前
, 18F
02/28 18:28, 18F
推
02/28 18:30,
3年前
, 19F
02/28 18:30, 19F
推
02/28 19:48,
3年前
, 20F
02/28 19:48, 20F
推
02/28 22:50,
3年前
, 21F
02/28 22:50, 21F
→
02/28 22:51,
3年前
, 22F
02/28 22:51, 22F
→
02/28 22:51,
3年前
, 23F
02/28 22:51, 23F
→
02/28 23:56,
3年前
, 24F
02/28 23:56, 24F
→
02/28 23:57,
3年前
, 25F
02/28 23:57, 25F
→
03/01 08:30,
3年前
, 26F
03/01 08:30, 26F
→
03/01 10:55,
3年前
, 27F
03/01 10:55, 27F
→
03/01 10:57,
3年前
, 28F
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
03/01 12:58, 33F
→
03/01 12:59,
3年前
, 34F
03/01 12:59, 34F
→
03/01 13:00,
3年前
, 35F
03/01 13:00, 35F
→
03/01 13:15,
3年前
, 36F
03/01 13:15, 36F
※ 編輯: BBSealion (59.120.195.65 臺灣), 03/01/2021 13:16:39
推
03/02 00:06,
3年前
, 37F
03/02 00:06, 37F
推
03/02 13:16,
3年前
, 38F
03/02 13:16, 38F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
討論
42
122