作者qazkevin (Gundam)
看板C_and_CPP
标题[问题] 请问大家会建议用纯C刷Leetcode吗?
时间Mon Sep 9 00:56:31 2019
如题,自己本身的工作内容是碰Linux Kernel Driver,
使用到的程式语言就是纯C,
比较不需要用到C++,
最近因为想增进自己的基本写程式能力,
想开始试着刷Leetcode,
但发现网路解答纯C的答案相当少,
假设未来工作发展也依然想往底层发展,
想请教各位大大给的建议为何?
例如:
1. 学底层应该只需要碰C,就用C刷题到底
2. 学C++比较好刷题,建议用C++来刷题,但长期写C++可能影响写C的逻辑!?
3. 反正只是想练习写程式,乾脆另外学一个新的语言来刷题,
例如:python,听说相对简单!?
还请各位大神解惑~感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.32.230.139 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1567961793.A.F07.html
1F:推 Schottky: 我没玩过 leetcode 但我的 UVa 都是纯 C 解题 09/09 06:04
2F:→ Schottky: 要说缺点就偶尔忘记,拿 // 当注解白白多一次失败纪录 09/09 06:05
3F:推 Gway: 不建议 用C处理IO很麻烦 你想练的应该是解题思维? 09/09 08:27
4F:→ Schottky: 不对吧,C++ 解题还是常常用 C 的 I/O function 去做 09/09 08:31
5F:→ Schottky: 像是 scanf 可以荣登排行榜第一名了 09/09 08:32
6F:推 Schottky: C++ 解题的好处我会讲 STL 09/09 08:39
7F:推 wahaha279: 听起来很爽 09/09 09:26
8F:→ sean72: 不建议用纯C, 不少题目要用priority que 09/09 10:41
9F:→ sean72: C++ STL有很多实用的container, 纯C只能自己手刻 09/09 10:42
10F:→ pmove: 基本上在discuss页面通常会有c的解答,你很难当第一个 09/09 11:20
11F:推 Gway: S大讲的认同 但scanf我觉得比起cin 真的差蛮多的 我也觉得 09/09 11:49
12F:→ Gway: 最大的优点是STL 09/09 11:49
13F:→ qazkevin: 听了各位大大的描述,感觉是建议用C++来刷题,而且要学 09/09 16:36
14F:→ qazkevin: 会用STL,请问是这样吗? 09/09 16:36
15F:推 Schottky: 我会说把 STL 常用的两三种资料结构背起来就无敌了 09/09 20:42
16F:→ Schottky: 反正目的不就是要练功吗,比别人多练两招又没有损失 09/09 20:44
17F:→ Schottky: 就第一次会有点痛而已,之後直接看小抄重复使用也行 XD 09/09 20:45
18F:→ Schottky: 严格来讲 STL 也不是 C++ 的精髓 09/09 20:48
19F:→ Schottky: 你只是把 C++ 的开发环境打开来写有 STL 的 C 而已... 09/09 20:48
20F:推 Schottky: 另一个在解题上有巨大优势的语言是 Java 09/09 20:51
21F:→ Schottky: 遇到大数题 (运算数字大到内建 integer 无法处理的题目) 09/09 20:52
22F:→ Schottky: 你可以不必自己写大数运算直接叫 Java 处理就好 09/09 20:53
23F:→ qazkevin: 感谢Schottky大大的回覆! 09/09 21:34
24F:→ lantw44: UVa 用 // 会失败是因为它开 C89 模式吧…… 09/09 22:03
25F:推 Schottky: 是,所以 compiler 要记得调成 C90,有时候还是会忘 09/10 00:58
26F:推 Gway: Schotty真强者无误! 09/10 16:15
27F:→ Gway: 少打一个k. Orz 09/10 16:16
28F:推 b0920075: 想学演算法用C要顾虑很多小细节还要自己手刻很麻烦 09/10 18:28
29F:推 stfang925: 我上次也听人家说第一次会有点痛而已 09/10 18:57
30F:→ Gway: 楼上 xD 如果练DS 自己造轮子是还不错拉 如果要练解题 应该 09/10 19:10
31F:→ Gway: 锻链思路(i.e algorithm)比较重要 ? 09/10 19:10
32F:→ Killercat: 纯C刷leetcode是在自己找自己麻烦 除非你想刷榜 09/10 21:04
33F:→ Killercat: cin/cout有一套加速的trick 09/10 21:06
35F:→ qazkevin: 听完各位大神的建议,我决定用C++来刷Leetcode,感谢各 09/10 22:02
36F:→ qazkevin: 位大神! 09/10 22:02
37F:→ firejox: 用C也不错阿,毕竟有时DS的设计会跟其他不太一样 09/11 00:04
38F:→ firejox: 像是kernel里的link list、rb tree 09/11 00:05
39F:→ pmove: 我觉得要看原po的功力到哪里,解的顺不顺,在Java以前的年 09/11 11:00
40F:→ pmove: 代,世界冠军用C刷题,效率还是很可怕的,如果原po只是一 09/11 11:00
41F:→ pmove: 般人,建议用python刷题,总比查答案来的好。 09/11 11:00
42F:→ cphe: 你先用C刷100题就知道了,一直重刻基本资料结构无助於你解这 09/11 12:24
43F:→ cphe: 些题目的思维 09/11 12:24
44F:推 Schottky: 一直靠 STL 逃避基本资料结构就对解题思维有帮助? 09/11 14:27
45F:→ Schottky: 这跟用 Java 逃避学习大数运算差不多等级 09/11 14:28
46F:→ Schottky: 你一直逃避的东西,其实花个三天工夫就能把code背起来了 09/11 14:31
47F:→ Schottky: 每次都不记得,每次都重新写重新debug确实很没帮助没错 09/11 14:32
48F:→ Schottky: 而且在家解题,难道不会把以前写的拿出来剪贴吗 XD 09/11 14:35
49F:推 Schottky: 原PO目标是将来学习用C写kernel,kernel里面是另一个世界 09/11 14:39
50F:→ cphe: 我曾经用C刷过快200题才这样讲,原po当然可以试试看,先想想 09/11 18:37
51F:→ cphe: 为什麽刷,目的在哪,就算kernel也都有API 09/11 18:37
52F:→ cphe: 总不会为了实现一个功能连内建的东西都不用 09/11 18:38
53F:推 cphe: 一般刷leetcode都是为了练习解题或面试,但如果是为了熟悉C 09/11 18:43
54F:→ cphe: 语言,倒是可以这样做 09/11 18:43
55F:推 michael0728n: 用C语法 + STL叫C++编,不用真的懂很深的C++啦 09/12 19:08
56F:推 cuteSquirrel: C++ STL 在基础的资料结构上的操作会方便许多 11/24 21:39