[問題] 請問大家會建議用純C刷Leetcode嗎?

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

Links booklink

Contact Us: admin [ a t ] ucptt.com