看板 C_and_CPP 關於我們 聯絡資訊
如題,自己本身的工作內容是碰Linux Kernel Driver, 使用到的程式語言就是純C, 比較不需要用到C++, 最近因為想增進自己的基本寫程式能力, 想開始試著刷Leetcode, 但發現網路解答純C的答案相當少, 假設未來工作發展也依然想往底層發展, 想請教各位大大給的建議為何? 例如: 1. 學底層應該只需要碰C,就用C刷題到底 2. 學C++比較好刷題,建議用C++來刷題,但長期寫C++可能影響寫C的邏輯!? 3. 反正只是想練習寫程式,乾脆另外學一個新的語言來刷題, 例如:python,聽說相對簡單!? 還請各位大神解惑~感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.230.139 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1567961793.A.F07.html
Schottky: 我沒玩過 leetcode 但我的 UVa 都是純 C 解題 09/09 06:04
Schottky: 要說缺點就偶爾忘記,拿 // 當註解白白多一次失敗紀錄 09/09 06:05
Gway: 不建議 用C處理IO很麻煩 你想練的應該是解題思維? 09/09 08:27
Schottky: 不對吧,C++ 解題還是常常用 C 的 I/O function 去做 09/09 08:31
Schottky: 像是 scanf 可以榮登排行榜第一名了 09/09 08:32
Schottky: C++ 解題的好處我會講 STL 09/09 08:39
wahaha279: 聽起來很爽 09/09 09:26
sean72: 不建議用純C, 不少題目要用priority que 09/09 10:41
sean72: C++ STL有很多實用的container, 純C只能自己手刻 09/09 10:42
pmove: 基本上在discuss頁面通常會有c的解答,你很難當第一個 09/09 11:20
Gway: S大講的認同 但scanf我覺得比起cin 真的差蠻多的 我也覺得 09/09 11:49
Gway: 最大的優點是STL 09/09 11:49
qazkevin: 聽了各位大大的描述,感覺是建議用C++來刷題,而且要學 09/09 16:36
qazkevin: 會用STL,請問是這樣嗎? 09/09 16:36
Schottky: 我會說把 STL 常用的兩三種資料結構背起來就無敵了 09/09 20:42
Schottky: 反正目的不就是要練功嗎,比別人多練兩招又沒有損失 09/09 20:44
Schottky: 就第一次會有點痛而已,之後直接看小抄重複使用也行 XD 09/09 20:45
Schottky: 嚴格來講 STL 也不是 C++ 的精髓 09/09 20:48
Schottky: 你只是把 C++ 的開發環境打開來寫有 STL 的 C 而已... 09/09 20:48
Schottky: 另一個在解題上有巨大優勢的語言是 Java 09/09 20:51
Schottky: 遇到大數題 (運算數字大到內建 integer 無法處理的題目) 09/09 20:52
Schottky: 你可以不必自己寫大數運算直接叫 Java 處理就好 09/09 20:53
qazkevin: 感謝Schottky大大的回覆! 09/09 21:34
lantw44: UVa 用 // 會失敗是因為它開 C89 模式吧…… 09/09 22:03
Schottky: 是,所以 compiler 要記得調成 C90,有時候還是會忘 09/10 00:58
Gway: Schotty真強者無誤! 09/10 16:15
Gway: 少打一個k. Orz 09/10 16:16
b0920075: 想學演算法用C要顧慮很多小細節還要自己手刻很麻煩 09/10 18:28
stfang925: 我上次也聽人家說第一次會有點痛而已 09/10 18:57
Gway: 樓上 xD 如果練DS 自己造輪子是還不錯拉 如果要練解題 應該 09/10 19:10
Gway: 鍛鍊思路(i.e algorithm)比較重要 ? 09/10 19:10
Killercat: 純C刷leetcode是在自己找自己麻煩 除非你想刷榜 09/10 21:04
Killercat: cin/cout有一套加速的trick 09/10 21:06
Killercat: https://tinyurl.com/y55xhery 可以參考這篇 刷榜能用 09/10 21:07
qazkevin: 聽完各位大神的建議,我決定用C++來刷Leetcode,感謝各 09/10 22:02
qazkevin: 位大神! 09/10 22:02
firejox: 用C也不錯阿,畢竟有時DS的設計會跟其他不太一樣 09/11 00:04
firejox: 像是kernel裡的link list、rb tree 09/11 00:05
pmove: 我覺得要看原po的功力到哪裡,解的順不順,在Java以前的年 09/11 11:00
pmove: 代,世界冠軍用C刷題,效率還是很可怕的,如果原po只是一 09/11 11:00
pmove: 般人,建議用python刷題,總比查答案來的好。 09/11 11:00
cphe: 你先用C刷100題就知道了,一直重刻基本資料結構無助於你解這 09/11 12:24
cphe: 些題目的思維 09/11 12:24
Schottky: 一直靠 STL 逃避基本資料結構就對解題思維有幫助? 09/11 14:27
Schottky: 這跟用 Java 逃避學習大數運算差不多等級 09/11 14:28
Schottky: 你一直逃避的東西,其實花個三天工夫就能把code背起來了 09/11 14:31
Schottky: 每次都不記得,每次都重新寫重新debug確實很沒幫助沒錯 09/11 14:32
Schottky: 而且在家解題,難道不會把以前寫的拿出來剪貼嗎 XD 09/11 14:35
Schottky: 原PO目標是將來學習用C寫kernel,kernel裡面是另一個世界 09/11 14:39
cphe: 我曾經用C刷過快200題才這樣講,原po當然可以試試看,先想想 09/11 18:37
cphe: 為什麼刷,目的在哪,就算kernel也都有API 09/11 18:37
cphe: 總不會為了實現一個功能連內建的東西都不用 09/11 18:38
cphe: 一般刷leetcode都是為了練習解題或面試,但如果是為了熟悉C 09/11 18:43
cphe: 語言,倒是可以這樣做 09/11 18:43
michael0728n: 用C語法 + STL叫C++編,不用真的懂很深的C++啦 09/12 19:08
cuteSquirrel: C++ STL 在基礎的資料結構上的操作會方便許多 11/24 21:39