做算法题,特别是在线答题,是不是不适合用 C 语言 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mengyaoss77
V2EX    问与答

做算法题,特别是在线答题,是不是不适合用 C 语言

  •  
  •   mengyaoss77 2018 年 3 月 25 日 4399 次点击
    这是一个创建于 2857 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近想练习算法,打开 LeetCode 做题。
    刚开始就碰见了那道 求最长子串的题目。
    直接先用 C 写了一个最复杂的遍历方法,当然是不过关的!
    然后看了下 solution 里面的方法,发现里面用了 Java 的 HashSet。
    心想“这特么也行?”, 我要是用 C 岂不是得手撸一个 hash 表出来?

    因为一直在学习 APUE,所以一直用的 C。
    印象中 C++标准库封装了很多高级结构,看来要好好学习一下 C++了啊。
    17 条回复    2018-03-25 23:39:15 +08:00
    muziki
        1
    muziki  
       2018 年 3 月 25 日   1
    数据结构基础已经有了就不要再用 C 了,浪费时间。数据结构还在打基础的话用 C 还行
    brickyang
        2
    brickyang  
       2018 年 3 月 25 日 via iPhone   2
    多数情况下对多数人而言 C++ == 扩充标准库的 C。

    你的目的如果是学习,那就手撸呗。实现功能就好,不用考虑工程性。
    mrsatangel
        3
    mrsatangel  
       2018 年 3 月 25 日
    用 c++吧, 那些基础设施 stl 里面都有
    mengyaoss77
        4
    mengyaoss77  
    OP
       2018 年 3 月 25 日
    @mrsatangel #3 嗯 我看到了,C++比 C 高级多了。
    yianing
        5
    yianing  
       2018 年 3 月 25 日
    c+-好哇,总不能什么轮子都自己从头造吧。
    SPACELAN
        6
    SPACELAN  
       2018 年 3 月 25 日
    最长子串又不是一定要用 hashset,

    你能不用容器,不用算法库,纯手撸各种题才让你算法练到强得一匹好吧
    vegito2002
        7
    vegito2002  
       2018 年 3 月 25 日   1
    按照 LeetCode 的标准来说, 用 C 确实是吃亏的, 因为 LeetCode 的很多题其实就是照着二三十分钟就必须 AC 的标准去设计的, 所以你还自己造轮子, 很多时候就是自己在搞自己了;

    如果真的是有兴趣, hackerrank 和那些老牌竞赛网站, 可以去用 C 试试, 手上有一套好用的数据结构源代码就行了, 这些网站的题目可能会对效率的要求高很多. 但是 LeetCode 的题目, 对速度的要求算是相当宽松了, 更多的是希望你能找到理解这个题目的想法.
    kljsandjb
        8
    kljsandjb  
       2018 年 3 月 25 日 via iPhone
    我全是用 C 写的…习惯问题 :)
    cheesea
        9
    cheesea  
       2018 年 3 月 25 日
    知道数据结构是啥就行了,做题的时候直接用语言自带的轮子。
    每道题都要手撸一遍数据结构,这不是闲的么。
    zqqian
        10
    zqqian  
       2018 年 3 月 25 日
    用 C with STL
    mengyaoss77
        11
    mengyaoss77  
    OP
       2018 年 3 月 25 日
    @vegito2002 #7 不太了解竞赛各种组织,我的本意是想为秋招做准备的。 看来还是需要好好掌握高级类型的封装才好。
    vegito2002
        12
    vegito2002  
       2018 年 3 月 25 日
    @mengyaoss77 刷题我个人意见还是不要急于求成, 就算是借用了别人的轮子, 先刷完一遍再说. 觉得自己厉害, 2pass 的时候再自己用 C 去捏轮子. 面试的时候, 做的出来就是做的出来, 做不出来就是做不出来, 没人管你能不能手写一个 hashmap.

    我平时用 java, 但是 Python 和 c++的解法也看, 我觉得如果你对 c 熟悉, 转 c++应该还是挺快的, 就是一些常用的数据结构操作, 没有什么乱七八糟的语言特性.
    victor97
        13
    victor97  
       2018 年 3 月 25 日 via Android
    C++ STL
    做算法比赛的往往还要自己准备一份厚厚的模板。
    重要的还是理解,理解数据结构的原理,复杂度,如何用到算法中。
    azh7138m
        14
    azh7138m  
       2018 年 3 月 25 日 via Android
    @vegito2002 lc 相当不友好了,之前有人造数据卡 Java 内置 sort,被骂了:)
    midasplus
        15
    midasplus  
       2018 年 3 月 25 日 via Android
    可以用 c with STL 啊(
    CodeingBoy
        16
    CodeingBoy  
       2018 年 3 月 25 日   1
    C with STL+1
    如果 STL/Collection 能让你免于造轮,就可以使用。比如 std::sort
    如果 STL 里面没有你要的东西,那用 C 也可以,反正都是要自己造
    wintercoder
        17
    wintercoder  
       2018 年 3 月 25 日
    表示刷这种题 我只习惯 C/C++,其他语言写得可别扭了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4255 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 01:02 PVG 09:02 LAX 17:02 JFK 20:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86