LeetCode 怎么刷题比较快速高效,还容易复习/复盘? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yazoox
V2EX    程序员

LeetCode 怎么刷题比较快速高效,还容易复习/复盘?

  •  
  •   yazoox 2024-01-28 15:15:53 +08:00 2451 次点击
    这是一个创建于 623 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,

    可能又要准备找工作了,虽然现在经济行情都不好,但没有办法,只能继续捡起来 leetcode 刷。但发现效率很低,特来请教一下大家,有没有比较好的实践,能够快速刷题,尤其是能够快速复习。

    1. 目前我还是使用 c/c++做题比较多,感觉还是这个 language 做题最顺手。如果其它语言,有更有效率的刷题方法,我可以切换过去。(我还记得有个兄弟,说过用 Rust ,本地建立一个项目组还是啥的,能够把做完的题目管理起来,直接本地跑,不记得在哪里看到的了)
    2. vscode 可以用来刷题么?现在工作上面,用 vscode 很多,但是都是写前端,基本没有配置 c/c++,没有编译环境。不会还得安装一个 visual studo 吧
    3. 刚才试了一下 VSCode + leetcode (或 labuladong 插件),能够把 leetcode 的题目拉下来,在本地生成.cpp 文件,比如, 1.two-sum.cpp, 但是本地没有测试用例,没有办法跑起来。简单的代码没有问题,稍微有点复杂的代码,还是需要 debug ,或者跑跑测试的。我在 leetcode.com 上面,直接在线写,debug 功能需要付费(“考前”突击可以付费打开一断时间,但长时间使用,付不起)
    4. 还有一个需求,就是刷了几百道题后,怎么快速复习一下。如果在线一题一题的点,一题一题看的话,感觉效率很低。本地有大量文件的话,可能会快很多。

    Anyway ,就是想看看/听听大家的想法,学习一下先进高效的方法。

    谢谢

    /* * @lc app=leetcode id=1 lang=cpp * * [1] Two Sum */ // @lc code=start class Solution { public: vector<int> twoSum(vector<int> &nums, int target) { unordered_map<int, int> valToIndex; for (int i = 0; i < nums.size(); i++) { // 查表,看看是否有能和 nums[i] 凑出 target 的元素 int need = target - nums[i]; if (valToIndex.count(need)) { return vector<int>{valToIndex[need], i}; } // 存入 val -> index 的映射 valToIndex[nums[i]] = i; } return vector<int>{}; } }; // @lc code=end 
    jakoer2001
        1
    jakoer2001  
       2024-01-28 21:38:09 +08:00
    我 vscode 用的插件有测试用例,C++还支持直接 debug 。插件的标识符是 ccagml.vscode-leetcode-problem-rating
    CLMan
        2
    CLMan  
       2024-01-28 23:45:09 +08:00
    每个题独立的包或者模块,我刷题主用 Go ,也用过 Rust ,共存在一个项目里面。

    结构如下:
    ```
    go.mod
    Cargo.toml
    array
    question1

    ```
    CLMan
        3
    CLMan  
       2024-01-29 00:02:16 +08:00
    我服了,随便按个键就自动回复了,啥设定啊。
    ------
    每个题独立的包或者模块,我刷题主要用 Go ,也用过 Rust ,共存在一个项目里面。

    结构如下( question1,question2 替换为对应问题的 url 路径,连字符 rust 用_,go 用-):
    ```
    go.mod
    Cargo.toml
    src/
    array/
    question1/
    solution_test.go
    question2.rs
    mod.rs
    dp/
    hash/
    ...
    lib.rs
    ```
    示例代码( contains-duplicate-iii.rs ):
    ```
    struct Solution {}

    // https://leetcode-cn.com/problems/contains-duplicate-iii/
    // 参考题解: https://leetcode-cn.com/problems/contains-duplicate-iii/solution/cun-zai-zhong-fu-yuan-su-iii-by-leetcode-bbkt/
    // 考点:滑动窗口、桶排序
    //
    // 一种朴素算法是计算所有可能的差值,时间复杂度为 kN ,空间复杂度为 O(1)
    //
    // 事实上,我们可以用空间换时间来改善算法。将数域根据其值划分所属空间,使用 hash 表记录当前空间的一个值
    // 在一次迭代所有值时,当前值可能:
    // 1. 所属空间有值,返回 true
    // 2. 所属上一个空间有值,两者差满足条件,返回 true
    // 3. 所属下一个空间有值,两者差满足条件,返回 true
    // 4. 将当前值记录到其空间中,同时维护窗口为大小 k:移动窗口并删除不在窗口内的值
    //
    //
    // 算法时间复杂度 O(N),空间复杂度主要是 hash 表的大小:O(min(k,N))

    impl Solution {
    fn get_id(n: i64, w: i64) -> i32 {
    if n >= 0 {
    (n / w) as i32 //0~w-1 属于 0
    } else {
    ((n + 1) / w - 1) as i32 //-w~-1 属于 -1
    }
    }
    pub fn contains_nearby_almost_duplicate(nums: Vec<i32>, k: i32, t: i32) -> bool {
    use std::collections::HashMap;
    let mut buckets: HashMap<i32, i32> = HashMap::new();
    let w: i64 = t as i64 + 1;
    // 省略实现代码
    false
    }
    }

    #[cfg(test)]
    mod tests {
    use crate::array::contains_duplicate_iii::Solution;

    #[test]
    fn test() {
    let nums = vec![2147483647, -1, 2147483647];
    let k = 1;
    let t = 2147483647;

    let ans = Solution::contains_nearby_almost_duplicate(nums, k, t);
    assert!(!ans)
    }
    }
    ```
    Go 版本就是需要一个单独的文件夹(包),里面代码也差不多,包括实现代码和测试代码。
    br />只要遵循特定语言的组织结构,测试规范,缝合其它语言进去也很容易。题目介绍、解题思路,可以放到代码里面,也可以单独用 markdown 文档记录,怎么顺手怎么来。
    CLMan
        4
    CLMan  
       2024-01-29 00:18:49 +08:00
    https://imgur.com/a/YiUkw4T

    上面丢失了层次,给个图像(这是之前没用 go mod ,后来添加了 go.mod )。

    用啥都能刷吧,主要是层次清晰就 OK ,Go 和 Rust 都挺适合用 vscode 写,语言官方自带测试工具,写单元测试也容易。

    个人更喜欢用 Go ,不需要任何语法负担。

    至于复习,我个人刷题主要是练习题感,并没有期望面试遇到原题,复习更多是从系统的数据结构与算法知识层面。
    stevenluox1
        5
    stevenluox1  
       2024-01-29 00:23:58 +08:00
    用文档记录一个刷题记录,好用
    ooo4
        6
    ooo4  
       2024-01-29 09:17:25 +08:00
    ts+vitest ,自己写单测
    https://github.com/linzhe141/leetcode
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1362 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 19ms UTC 16:43 PVG 00:43 LAX 09:43 JFK 12:43
    Do have faith in what you're doing.
    ubao 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