V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
YUX
V2EX  ›  程序员

请问用 go 刷算法题舒服么(对比 c++)

  •  
  •   YUX ·
    YUX · 2021-01-04 15:38:08 +08:00 · 8752 次点击
    这是一个创建于 1419 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对 golang 不是很了解 一直在用 c++刷 最近想刷题的过程中顺便入门一下 go

    • 首先是速度 go 运行速度和 c++比怎么样(仅限刷题) 刷算法题对时间比较敏感 我怕超时
    • go 对字符串的处理怎么样
    • go 有没有类似于 c++ stl 标准库的东西 比如 priority queue 之类的直接拿来用现成的
    • 有啥坑

    thanks

    38 条回复    2021-01-11 03:13:27 +08:00
    Mivon
        1
    Mivon  
       2021-01-04 15:41:18 +08:00   ❤️ 1
    单纯只是刷算法题,c++舒服,各种数据结构在标准库都比较全
    xcstream
        2
    xcstream  
       2021-01-04 15:41:35 +08:00
    应该不存在同样的算法一个语言时间可以一个语言时间不够
    bonfy
        3
    bonfy  
       2021-01-04 15:44:20 +08:00   ❤️ 2
    @xcstream 你试试 Python 就知道了 C++ pass,Python TLE
    stirlingx
        4
    stirlingx  
       2021-01-04 15:49:53 +08:00   ❤️ 8
    go stl 轮子已经造好,类似 c++ stl
    https://github.com/liyue201/gostl
    also24
        5
    also24  
       2021-01-04 15:51:21 +08:00
    @bonfy #3
    方便提供一下题目 ID 嘛?
    一般来说,时间限制应该是根据不同语言区别设定的。
    hbolive
        6
    hbolive  
       2021-01-04 15:55:37 +08:00
    @also24 时间对比都是同一个语言吧。。
    also24
        7
    also24  
       2021-01-04 15:59:03 +08:00
    @hbolive #6
    建议仔细看一下,我在回复 3 楼
    YUX
        8
    YUX  
    OP
       2021-01-04 16:00:41 +08:00
    某平台所有语言时间限制都是一样的😂
    also24
        9
    also24  
       2021-01-04 16:02:26 +08:00
    @YUX #8
    哪个平台这么狠啊?想要搞死写 Java / Python 的么,发个网址看下?
    YUX
        10
    YUX  
    OP
       2021-01-04 16:10:57 +08:00
    also24
        11
    also24  
       2021-01-04 16:17:15 +08:00   ❤️ 1
    @YUX #10
    看了下帮助信息,果然是要搞死其它语言的节奏,这完全就是在明示你选择 C / C++ 了。

    > 不同语言的时间限制和内存限制是相同的吗?
    > 是相同的,我们认为选择合适的编程语言也是一项必备技能,所以没有为不同语言设置不同的限制条件。


    不过我稍晚翻了下它页面上的信息,如果你是为了这个考试的话,那最好还是不要用 go 了,因为:

    > 考试网站及评测服务器支持二十余种编程语言,但各考场只保证提供 C 、C++、Java 三种语言的开发环境
    bigpigeon
        12
    bigpigeon  
       2021-01-04 16:19:46 +08:00
    力抠不舒服,Tree 和 List 没有现成的库,导致我在本地测试的时候为了打印这 2 个东西造了各种函数
    90928yao
        13
    90928yao  
       2021-01-04 17:54:50 +08:00
    golang 标准库太少了 肯定 cpp python 舒服
    ErwinCheung
        14
    ErwinCheung  
       2021-01-04 18:10:44 +08:00
    python 超时很多 而且一些解法不被认可。。 看不出底层功底

    还是 cpp 最好
    lewinlan
        15
    lewinlan  
       2021-01-04 18:20:01 +08:00 via Android   ❤️ 1
    go stl 是歪门邪道
    darksword21
        16
    darksword21  
       2021-01-04 18:20:40 +08:00
    不会 cpp 怎么办,边学边刷吗
    littlewing
        17
    littlewing  
       2021-01-04 19:44:51 +08:00
    Java 舒服
    MoYi123
        18
    MoYi123  
       2021-01-04 19:55:18 +08:00
    @also24 leetcode 第一题,O(n2)的解法,python 超时,C++能过。
    goodboy95
        19
    goodboy95  
       2021-01-04 20:22:44 +08:00
    pat 不打顶级,只要时间复杂度选的合适,都不卡时间的(就算打顶级一般也不会卡时间吧)
    stirlingx
        20
    stirlingx  
       2021-01-04 20:26:04 +08:00
    @lewinlan 怎么说
    ginjedoad
        21
    ginjedoad  
       2021-01-04 20:50:12 +08:00
    rust 刷才有意思
    seesky
        22
    seesky  
       2021-01-04 20:56:09 +08:00   ❤️ 1
    不舒服, 缺太多东西了
    lithbitren
        23
    lithbitren  
       2021-01-04 21:53:44 +08:00   ❤️ 2
    rust 刷复杂数据结构能怀疑人生,满屏 unwrap()
    also24
        24
    also24  
       2021-01-04 23:11:28 +08:00
    @MoYi123 #18
    我随手写了下 O(n^2) 的解法,好像不会超时啊


    DGideas
        25
    DGideas  
       2021-01-04 23:32:57 +08:00
    反正刷 LeetCode 英文站的时候,我用 Go 语言写的程序
    执行用时:超过 99.99% 的用户
    内存消耗:超过 100.00% 的用户

    [流汗]
    irytu
        26
    irytu  
       2021-01-04 23:57:46 +08:00
    我一般都是用 C 刷,遇到一些需要用到的 ADT 比如 hash table,会换 c++😂
    ruokw
        27
    ruokw  
       2021-01-05 00:47:50 +08:00 via Android
    python yyds 哈哈,做题怎么来方便怎么来 你搞个 c 艹可能代码没写完 python 就开始做下一题了
    user8341
        28
    user8341  
       2021-01-05 05:11:16 +08:00
    @irytu 不说哈希表,C 连个链表都没有。C 还是适合底层开发,用来刷题不会有点累?
    irytu
        29
    irytu  
       2021-01-05 05:16:26 +08:00
    @user8341 理解你说的 只是平时不太写代码 刷题好不容易写写代码 就想着尽可能多写吧 简单数据结构用 C 实现一下其实也能接受 比如链表 树这些 弄个自定义的结构体基本满足需求 实现 stack queue 等这类基本的
    bojongle
        30
    bojongle  
       2021-01-05 08:11:46 +08:00 via iPhone
    不同语言刷题都大差不差。说来说去也就 if else while,最多 api 不一样,看看官方 doc 两三天就熟了。刷题对语言本身熟悉度的锻炼起不到作用
    zjsxwc
        31
    zjsxwc  
       2021-01-05 08:30:55 +08:00
    还行,你们用 gostl,我写 go 都用 gounderscore 。用类 underscore 的方式写 go
    https://github.com/tobyhede/go-underscore
    xpresslink
        32
    xpresslink  
       2021-01-05 10:19:48 +08:00
    ACM 比赛语言:可以使用的语言:C++、C 、Java 和 Pascal 。
    ICPC 来说的一般必有 C,C++,Java 三种选择
    其实只能选 C++, 因为你以后要写复杂点的算法,要用大量的 STL 容器,别的语言都没这么方便

    如果为了写复杂算法伪代码,我建议用 python,简明,库全,且更接近自然语言。
    52coder
        33
    52coder  
       2021-01-05 10:34:04 +08:00
    @user8341 工作中使用 C,刷题用 C/C++,C++刷题效率太高了 stl 各种封装好的实现,比自己手写效率高,当然使用 C 刷题更能锻炼编码基本功,毕竟 leetcode 上用例相对完善,能发现一些工作中平时覆盖不到的地方(溢出 超时问题等)
    lithbitren
        34
    lithbitren  
       2021-01-05 11:42:14 +08:00   ❤️ 1
    @bojongle 对于其他语言是这样的,对 Rust 不行,循环递归闭包很多时候会因为所有权的语法限制的增加很多其他语言不需要的代码和中间变量,部分数据结构还得考虑生命周期的问题,还是复杂很多的,其他主流语言完全就是 API 替换,这个倒是没什么争议,最多是静态类型和动态类型两种风格。
    labulaka521
        35
    labulaka521  
       2021-01-05 11:48:52 +08:00
    我觉得还行
    Claar
        36
    Claar  
       2021-01-05 18:50:24 +08:00 via iPhone
    @bonfy 用 python 写超时了可能说明算法的复杂度太高,根本不是人家想要的标准答案,c++能过应该只是恰好
    bonfy
        37
    bonfy  
       2021-01-06 09:11:10 +08:00
    @Claar 只能说明有更优解 普通的递归解法 可能 python 就超时
    Arnie97
        38
    Arnie97  
       2021-01-11 03:13:27 +08:00 via Android
    @lithbitren 包一层返回 Result<> 的函数,用 ? 舒服点😂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1285 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:58 · PVG 01:58 · LAX 09:58 · JFK 12:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.