学完C语言力扣第一题做不来正常吗

太正常了,正常得不能再正常。

我见过的绝大部分人,包括我自己,学完 C 语言去刷力扣,第一题两数之和都是懵的。你不是学不会,你是被"学完"这两个字骗了。

学完 C 语言 ≠ 会写算法

C 语言教的是什么?变量、循环、数组、指针、结构体。你学会了这些,相当于你认识了锤子、锯子、螺丝刀------但没人教过你怎么盖房子。

力扣第一题两数之和,题干就一句话:"给一个数组和一个 target,找两个数和为 target 的下标"。你脑子里第一反应是两层 for 循环暴力怼,写出来能过,但然后呢?题解里那些用 HashMap 的、用双指针的、讨论 O(n) 和 O(n²) 的------这些词你在 C 语言课上一个都没见过。

这就是原因的根源。C 语言教的是语法 ,算法题考的是思路。你手里有工具,但没人教过你遇到一个问题要怎么拆解、怎么选数据结构、怎么把时间复杂度降下来。这跟你学没学好 C 语言没半毛钱关系,这是两套完全不同的技能树。

我自己的经历

我学完 C 之后刷的第一题也是两数之和。暴力写出来了,然后看题解里"HashMap 一次遍历",心想 HashMap 是什么东西?Java 的库?C 语言里没有啊?

后来才明白,C 语言能写数据结构不代表它就自带数据结构。你用 C 还得自己实现哈希表,而 Java、Python 直接调库就行。学完 C 语言反而可能比学完 Java 的人更吃力------因为别人有现成的轮子,你得自己造。

所以当时我卡了两天,不是因为我不行,是因为我缺了中间那一层:从语法到算法的过渡期。

你现在缺的到底是什么

帮你理一下,其实就三层东西,你现在只打了第一层的地基:

第一层:语法(你已经有了)------变量、循环、条件、函数、数组、指针。你知道怎么写代码,但不知道码往里写什么。

第二层:数据结构常识------数组的增删改查复杂度是多少?链表解决了数组的什么问题又带来了什么新问题?哈希表为什么能 O(1) 查找?这些你不一定每个都立刻掌握,但至少要先见过一遍、有个印象。两数之和的暴力解法用到了数组,最优解用到了哈希表------你不认识哈希表,当然想不到最优解。

第三层:算法思维 ------拿到一个问题,怎么分析、怎么拆解、怎么从暴力优化到最优。这个没有任何捷径,就是靠题量堆出来的。没有人天生就会,所有人都是刷了几十道题之后才开始"有感觉"。

你现在第一层打完了,第二层还没开始,直接冲第三层------卡住不是你的问题,是顺序的问题。

怎么办

最重要的一件事:换语言。

如果你现在还在用 C 语言刷题,立刻换成 Java 或者 Python。不是 C 不好,是 C 不适合入门刷题。别人写两数之和 HashMap 版就五六行,你拿 C 要手写一个哈希表------同样的时间别人刷了三道题,你还在跟链表碰撞、内存管理较劲。刷题练的是算法思维,不是造轮子。等你有两百题打底了,想回来用 C 深入理解底层,那没问题。但入门阶段别用 C 折磨自己。

然后分两步走:

第一步:过一遍基础数据结构

链表、栈、队列、哈希表、树。每个结构知道它长什么样、解决了什么问题、基本操作是什么。不用太深,一个星期够用了。看视频或者图解文章都行,重点是看完一个结构就去 LeetCode 上写两道对应的简单题。比如看完哈希表就去写两数之和、看完链表就去写反转链表。

第二步:从简单题开始堆量

别一上来就攻坚克难。按 LeetCode 的难度排序,从通过率最高的简单题开始,每天写两道。前二三十道题你会很痛苦------每道题都要看题解、每道题都觉得自己好笨。这不是你笨,是所有人都这样。刷到五十题左右,你会发现有很多题长得差不多,思路可以复用。刷到一百题,简单题基本能独立 AC 了。

学习算法跟学自行车一样------摔着摔着突然就会了。不要因为前几次摔了就觉得自己不是这块料。

最后

你问"正常吗"------这问题本身就已经说明你开始意识到不对劲了,你在找原因。这个意识,比那些学完 C 觉得自己已经会编程了的人,强得不是一点半点。

第一题做不来,继续做、看题解、再写、再看。一百题之后回头看,你会发现两数之和跟喝水一样简单。但那个时候你会遇到新的题、新的卡住、新的自我怀疑------那个也是正常的。正常你就接着写。写就完了。

相关推荐
yi01117 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
灯澜忆梦20 小时前
【面向对象编程C++】| 基础语法
java·c++·算法
禾小西20 小时前
Redis 数据结构:快速的 Redis 有哪些慢操作?
数据结构·数据库·redis
小蒋观天下20 小时前
专项方案:大场景港口AI安防、多干扰环境下的算法调优与落地实操
人工智能·深度学习·算法·安全·机器学习·计算机视觉·ai大模型
Evand J20 小时前
【电机滤波例程5】渐消因子自适应扩展卡尔曼滤波(EKF),MATLAB。PMSM负载突变下的状态估计。附下载链接
算法·matlab
H.莓飛21 小时前
【数据结构】二叉树_OJ题
linux·开发语言·数据结构·算法
好想像大佬一样能够ak所有21 小时前
Leetcode35.搜索插入位置
数据结构·算法·leetcode
aqiu11111121 小时前
【C++算法打怪专栏】LeetCode 165. 比较版本号(双指针与字符串流法)
c++·算法·leetcode
黄金龙PLUS21 小时前
如何基于置换算法来设计对称加密算法
算法·网络安全·密码学·哈希算法·同态加密
不会就选b1 天前
算法日常・每日刷题--<动态规划>14
算法