批量获取力扣做题量工具

本文介绍了一个用于批量统计LeetCode做题量的Shell工具,旨在提高团队统计效率,避免手动逐个查看的繁琐过程。作者提倡通过自动化工具来提升工作效率,脚本易于使用,只需直接运行即可。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一个批量统计国内版LeetCode做题量的工具,写这个小工具的起因是我们实验室准备每周统计大家leetcode的做题量,我们实验室十几个人,如果一人一个人看,太费时间了,作为高效程序员这不是我们做事的风格,于此就有了这个小工具。对于平常的事务我一贯对待的风格是:能规范化的尽量使其流程化,能流程化的尽量使其自动化。追逐效率工具能解放我们更多的时间。

脚本代码

#!/bin/bash

payload_pre='{
    "operationName": "userPublicProfile",
    "variables": {
        "userSlug": "'
payload_post='"
    },
    "query": "query userPublicProfile($userSlug: String!) {
   
   \n  userProfilePublicProfile(userSlug: $userSlug) {
   
   \n    usern
### 使用 Makefile 编译和测试 LeetCode 题目 为了有效地使用 `Makefile` 来编译和测试 LeetCode 题目,可以创建一个结构化的项目目录并编写相应的 `Makefile` 文件。下面是一个简单的例子。 #### 项目结构 假设有一个名为 `leetcode_solutions` 的项目根目录,其下有如下子目录: - `src/`: 存放源代码文件的地方。 - `test/`: 测试用例所在的路径。 #### 创建 Makefile 在项目的根目录中创建一个名为 `Makefile` 的文件[^1]。此文件用于定义构建过程中的目标、依赖关系以及命令。 ```makefile CC=gcc # C Compiler, change to g++ for C++ CFLAGS=-Wall # Compilation flags LDFLAGS= # Linker flags (if any) SRCDIR=src # Source directory TESTDIR=test # Test cases directory OBJDIR=obj # Object files output directory BINDIR=bin # Executable binaries output directory # Define source and object file lists dynamically based on the current contents of src/ SRC=$(wildcard $(SRCDIR)/*.c) OBJS=$(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRC)) all: directories leetcode_test directories: @mkdir -p $(OBJDIR) $(BINDIR) $(OBJDIR)/%.o: $(SRCDIR)/%.c | directories $(CC) $(CFLAGS) -c $< -o $@ leetcode_test: $(OBJS) $(CC) $(OBJS) -o $(BINDIR)/$@ ./$(BINDIR)/$@ clean: rm -rf $(OBJDIR)/* $(BINDIR)/* .PHONY: all clean directories leetcode_test ``` 这段脚本做了几件事情: - 设置了编译器 (`gcc`) 及其他选项; - 定义了一些有用的变来简化后续操作; - 动态获取所有的 `.c` 源码文件,并将其转换为目标对象文件列表; - 规定了默认的目标是执行所有任务(`all`); - 提供了一个清理功能以删除生成的对象文件和可执行程序。 对于每一个具体的 LeetCode 题目,在 `src/` 下面放置对应的实现文件(比如 `two_sum.c`, `add_two_numbers.c`),然后可以在终端里通过输入 `make leetcode_test` 或者直接 `make` 来自动完成编译与运行的过程。 #### 添加测试案例 为了让上述流程更加完善,还可以考虑加入单元测试框架或手动准备一些基本的测试数据放在 `tests/` 文件夹里面。每次调用 `make leetcode_test` 后都会尝试读取这些预设的数据来进行验证工作。 例如,如果要为某个特定的问题添加测试,则可以在 `test/two_sum.in` 中写入样例输入,在同一位置建立相应输出文件 `test/two_sum.out`。接着修改 `Makefile` 如下所示: ```makefile ... leetcode_test: $(OBJS) $(CC) $(OBJS) -o $(BINDIR)/leetcode_test for test_case in $(TESTDIR)/*.in; do \ base_name=$${test_case%.*}; \ expected_output="$${base_name}.out"; \ actual_output="$${base_name}.actual_out"; \ ./$${bindir}/leetcode_test < $$test_case > $$actual_output && diff $$expected_output $$actual_output || echo "Test failed: $$base_name"; \ done; ... ``` 这样就可以自动化地对比实际结果同预期的结果之间的差异了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值