作者:
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,聽說相對簡單!?
還請各位大神解惑~感謝
我沒玩過 leetcode 但我的 UVa 都是純 C 解題要說缺點就偶爾忘記,拿 // 當註解白白多一次失敗紀錄
作者:
Gway (我愛的你 也愛我 好嗎?)
2019-09-09 08:27:00不建議 用C處理IO很麻煩 你想練的應該是解題思維?
不對吧,C++ 解題還是常常用 C 的 I/O function 去做像是 scanf 可以榮登排行榜第一名了C++ 解題的好處我會講 STL
作者:
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:00S大講的認同 但scanf我覺得比起cin 真的差蠻多的 我也覺得最大的優點是STL
作者:
qazkevin (Linus)
2019-09-09 16:36:00聽了各位大大的描述,感覺是建議用C++來刷題,而且要學會用STL,請問是這樣嗎?
我會說把 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:00UVa 用 // 會失敗是因為它開 C89 模式吧……
是,所以 compiler 要記得調成 C90,有時候還是會忘
作者:
Gway (我愛的你 也愛我 好嗎?)
2019-09-10 16:15:00Schotty真強者無誤!少打一個k. Orz
作者:
Gway (我愛的你 也愛我 好嗎?)
2019-09-10 19:10:00樓上 xD 如果練DS 自己造輪子是還不錯拉 如果要練解題 應該鍛鍊思路(i.e algorithm)比較重要 ?
作者:
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題就知道了,一直重刻基本資料結構無助於你解這些題目的思維
一直靠 STL 逃避基本資料結構就對解題思維有幫助?這跟用 Java 逃避學習大數運算差不多等級你一直逃避的東西,其實花個三天工夫就能把code背起來了每次都不記得,每次都重新寫重新debug確實很沒幫助沒錯而且在家解題,難道不會把以前寫的拿出來剪貼嗎 XD原PO目標是將來學習用C寫kernel,kernel裡面是另一個世界
作者:
cphe (魔鬼藏在垃圾筒裡)
2019-09-11 18:37:00我曾經用C刷過快200題才這樣講,原po當然可以試試看,先想想為什麼刷,目的在哪,就算kernel也都有API總不會為了實現一個功能連內建的東西都不用一般刷leetcode都是為了練習解題或面試,但如果是為了熟悉C語言,倒是可以這樣做
用C語法 + STL叫C++編,不用真的懂很深的C++啦
C++ STL 在基礎的資料結構上的操作會方便許多