作为“初学者”应该怎么上手力扣题

这是困扰我们这些“菜鸟”“新手”很久的问题,今天博主就来一一解答


前言

博主作为一名接触Java不过两年的萌新,和大家一样从刚开始的不懂什么是刷题,怎么去刷题,刷哪些题,如何去巩固,到现在已经刷了600+题,周赛稳定三道的划水选手。我知道大家刷题大部分的目的就是为了笔试,我也不例外,作为转码选手,笔试成了我们唯一能和科班选手一教高下的武器,接下来我们就来看看如何能够快速提升笔试水平吧!


一、前期准备

        从我的经验来看,刷算法题前提,算法其实不是最重要的,你一定要掌握好数据结构,堆、栈、队列等等,其次才是开始慢慢的去掌握相关的方法,就比如说双指针、动态规划、贪心等等,所以我不建议一开始就去学哪些什么迪杰斯特拉、弗洛伊德算法等等。掌握基础的数据结构才是关键,知道什么时候用哪个、性能如何、保证自身的时间复杂度这才是重中之重。

二、刷题时

1.刷哪些

        可能很多同学一开始刷不知道刷哪些题

对于C语言新手力扣目,以下是一些方法和建议: ### 顺序 初次力扣,建议按照 数学 > 数组 > 链表 > 字符串 > 哈希表 > 双指针 > 递归 > 栈 > 队列 的顺序进行,优先难度简单、通过率在 50%以上的目,这样有助于新手逐步建立信心和掌握基础知识[^2]。 ### 工具选择 - **IDE**:使用IDE可以提供强大的代码编辑、调试等功能,但它占用资源较多,需要较高的计算机配置,且学习成本较高,对于初学者来说,掌握和利用其所有功能可能需要一些时间。 - **在线编译器**:许多在线平台提供了C语言的在线编译器,如菜鸟工具的在线编译器,各大平台也提供了在线编译器,比如力扣等。这种方式不需要在本地安装编译器,访问在线编译器网站,输入代码并编译即可[^3]。 ### 代码实现与优化 - **基础实现**:在实现代码时,先确保能够正确解决问。例如在力扣新手单的FizzBuzz问中,通过动态分配内存创建数组,根据条件判断输出不同的字符串。代码如下: ```c char** fizzBuzz(int n, int* returnSize) { *returnSize = n; char** answer = (char**)malloc(sizeof(char*) * n); char* arr = (char*)malloc(sizeof(char) * n * 9); for (int i = 0; i < n; i++) answer[i] = &arr[9 * i]; for (int i = 1; i <= n; i++) { if ((i % 3 == 0) && (i % 5 == 0)) answer[i - 1] = "FizzBuzz"; else if (i % 3 == 0) answer[i - 1] = "Fizz"; else if (i % 5 == 0) answer[i - 1] = "Buzz"; else sprintf(answer[i - 1], "%d", i); } return answer; } ``` - **优化思维**:在解决问后,思考是否有更优的解决方案。如力扣66.加一问,若没有产生进位则直接返回原数组,若进位则新开数组输出。代码如下: ```c /** * Note: The returned array must be malloced, assume caller calls free(). */ int* plusOne(int* digits, int digitsSize, int* returnSize) { if (digits == NULL && digitsSize == 0) { *returnSize = 0; return NULL; } int i; for (i = digitsSize - 1; i >= 0; i--) { if (digits[i] == 9) { digits[i] = 0; } else { digits[i]++; *returnSize = digitsSize; return digits; } } *returnSize = digitsSize + 1; int *a = (int*)malloc((digitsSize + 1) * sizeof(int)); memset(a, 0, (digitsSize + 1) * sizeof(int)); a[0] = 1; return a; } ``` ### 注意事项 在力扣目时,要注意目描述的细节。有些目描述可能存在问,比如数组访问下标仍是从0开始的,而非1[^1]。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值