尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
安了半天环境,刷完普通数组:第24天编程学习实战记录
1. 项目拆解从“半天装环境”到“刷完普通数组”的真实记录说实话看到这个标题的第一眼我就笑了——“安了半天程序”这几个字简直是每个刷题人的灵魂写照。这个项目不是某个开源框架也不是什么大型系统而是一个编程学习者在第24天时的一次阶段性打卡用某套Web开发教程为主线白天折腾环境安装晚上刷LeetCode Hot 100里的“普通数组”分类题目。就这么简单却非常真实。这个内容适合谁两类人特别有共鸣一类是刚开始学Web开发、被环境配置折磨到怀疑人生的新手另一类是刷LeetCode Hot 100时在数组题上反复卡壳的算法学习者。如果你正处于这两个状态的交叉点这篇内容就是为你准备的——我会把“半天装环境”到底卡在哪、怎么排查“普通数组”到底考什么、怎么突破全部拆开揉碎讲清楚。先说结论这个项目的核心价值不在于“学了什么技术栈”而在于它真实还原了一条绝大多数人会走的路——先被环境劝退再被算法暴打最后靠坚持完成每日目标。这种过程比任何“三天精通XX”的教程都更有参考意义。2. 环境安装的“半天”到底耗在哪工具链基础与排查经验2.1 你可能低估了“安装程序”这件事的复杂度我见过太多人包括我自己早期都觉得“安装程序”就是把安装包下载下来一路点“下一步”。但当你真正开始学Web开发时会发现环境安装其实是一整条链语言运行环境比如Python、Node.js或Java JDK包管理器pip、npm、yarn、Maven等集成开发环境IDE或编辑器VS Code、IDEA、PyCharm等数据库MySQL、PostgreSQL、MongoDB等项目脚手架或框架工具Vite、Spring Initializr、Django等版本控制工具Git可能还有Docker、虚拟机或本地代理配置每一样看起来都是“双击安装”但组合起来任何一个环节出错都能耗掉你半天。标题里“安了半天程序”大概率就是这种“每个软件都装好了但项目就是跑不起来”的经典场景。我当时陪一个朋友排查过类似问题他装的是某个Web全栈课程的环境Node.js装了MySQL装了还装了IDE插件结果启动项目时一直报数据库连接错误。折腾两个小时最后发现是MySQL的配置文件里端口写错了3306被占用服务根本没起来。这类问题的可怕之处在于——报错信息不会直接告诉你“端口被占”而是告诉你“连接拒绝”或“无法建立连接”新手根本不知道从哪查起。2.2 环境安装的标准排查顺序从终端到配置再到依赖如果你也正在“安了半天程序”的阶段我给你一套亲自验证过的排查顺序不是玄学是经验先用终端验证基础命令。比如装了Node.js就打开终端执行node -v如果提示找不到命令说明没配置好环境变量如果版本号能正常显示至少说明这一步过了。再验证包管理器。执行npm -v或pip --version确认安装依赖的工具本身可用。然后验证数据库服务。以MySQL为例执行mysql -u root -p或Windows下的mysql -u root -p如果提示错误先排查服务是否启动、端口是否默认、用户名密码是否正确。最后才是启动项目。项目启动报错时优先看完整的错误堆栈信息不要只看最后一行“ERROR”往上看几行通常能找到是缺依赖、缺配置、还是连接超时。这个顺序的核心逻辑是从最底层的基础环境开始排除逐步向上确认。不要一上来就怀疑代码写错了很多时候代码没任何问题纯粹是环境没搭建好。2.3 一个被很多人忽略的“半天杀手”网络与镜像源另外还有一件事特别容易耗掉你半天时间——包下载速度慢或失败。尤其在国内网络环境下直接用官方源安装依赖经常卡在npm install或pip install等半天不动然后超时报错。我实测下来最快的解决办法就是切换到国内镜像源# 针对 npm npm config set registry https://registry.npmmirror.com # 针对 pip pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 针对 Maven # 修改 settings.xml 或使用阿里云镜像切换完镜像源之后原本可能要装半小时的依赖往往一两分钟就能跑完。这不算什么高深技术但很多人不知道结果在“安装依赖”这一步白白浪费大量时间。提示如果切换镜像源还慢可以用npm config get registry确认配置是否生效。很多工具安装配置后不会立刻提示需要手动验证。3. Hot 100普通数组题型的核心逻辑从“背题”到“懂题”3.1 普通数组到底在考什么LeetCode Hot 100里的“普通数组”分类题目并不多但覆盖的点很集中。典型题目包括“最大子数组和”、“合并区间”、“轮转数组”、“除自身以外数组的乘积”、“缺失的第一个正数”等。这些题不涉及太复杂的数据结构基本就是数组本身 双指针、前缀和、原地操作、贪心或分治思想。很多人刷这类题时会陷入一个误区觉得“数组题简单”然后直接看题解把答案抄一遍就过了。但这样刷完基本没收获换个问法照样不会。我对自己的要求是每一道普通数组题必须搞清楚三个问题——暴力解法长什么样为什么暴力不够好优化到底优在哪里举个例子“最大子数组和”是一道很经典的动态规划题但本质上也可以用“贪心”来理解当你累加的和变成负数时它对后续子数组已经没有正贡献了不如从下一个元素重新开始。这个逻辑想通了代码写起来就很简单def max_sub_array(nums): max_sum nums[0] current_sum 0 for num in nums: current_sum num if current_sum max_sum: max_sum current_sum if current_sum 0: current_sum 0 return max_sum这里的核心不是记住current_sum 0就重置而是理解“负贡献”这个概念。理解了概念以后遇到“最佳买卖股票时机”这类相似题你也能触类旁通。3.2 双指针技巧普通数组题中的“万金油”Hot 100普通数组里很多题都可以用双指针解决。比如“移动零”就是典型的双指针题——一个指针遍历数组另一个指针指向“下一个非零元素应该放的位置”def move_zeroes(nums): insert_pos 0 for i in range(len(nums)): if nums[i] ! 0: nums[insert_pos], nums[i] nums[i], nums[insert_pos] insert_pos 1这里用原地交换代替“先把非零元素往前放再补零”的做法好处是避免了额外的零填充操作一步到位。双指针的思维核心是让两个指针各自负责一个位置通过移动规则在一次遍历中完成原本需要多次遍历的工作。3.3 最难的一类原地哈希与“顺序无关”问题普通数组分类里最让新手崩溃的通常是“缺失的第一个正数”这类题因为它要求O(n)时间、O(1)额外空间。看到这种条件第一反应往往是“不可能”因为排序都要O(n log n)。但这类题的巧妙之处在于利用数组索引和值的关系。思路是把所有在1到n范围内的数放到它“应该所在的位置”上即把数值val放到索引val-1处。之后再遍历数组第一个nums[i] ! i1的位置就是缺失的第一个正数。整个过程通过原地交换完成不需要额外数组。def first_missing_positive(nums): n len(nums) for i in range(n): while 1 nums[i] n and nums[nums[i] - 1] ! nums[i]: nums[nums[i] - 1], nums[i] nums[i], nums[nums[i] - 1] for i in range(n): if nums[i] ! i 1: return i 1 return n 1这类题的难点不在于代码本身而在于你能不能想到“用数组本身作为哈希表”这个思路。想到之后写起来就是几行的事想不到憋一天也憋不出来。实操心得我刷这类题的时候会先给自己计时20分钟。如果20分钟内完全没思路直接看题解然后关掉题解自己重写一遍。重写比看题解重要十倍。看题解是“懂”重写是“会”。4. 刷题过程中的典型问题与排查建议4.1 越刷越怀疑自己是不是我太笨了这是几乎所有刷题者都会遇到的阶段标题里没有明说但我可以从“第24天”这个信息推测坚持到24天的人大概率已经过了“兴奋期”进入“平台期”。平台期的典型症状是简单题能过中等题要查题解难题直接放弃。我的个人经验是平台期最好的突破方式不是“多刷题”而是**“复盘”**。每天刷完题后把当天做错的题、卡壳的点用一句话总结下来。比如“合并区间忘了先按左端点排序”“轮转数组k 需要先对 n 取模”“除自身以外数组的乘积需要分前缀和后缀两次遍历”这些一句话总结比你在题解里抄十遍代码都管用。因为它们是在你自己的思考语境下生成的以后再遇到类似题会被瞬间唤醒。4.2 环境问题与刷题问题交叉出现怎么办如果你既在学Web开发、又在刷题我特别建议你把这两件事分开安排。比如上午集中搞环境安装和Web项目下午专注刷算法。不要一会儿装环境一会儿刷题——因为环境安装的挫败感很容易影响刷题的专注力。你会满脑子想着“程序还没跑起来”根本没心思分析nums[i] ! i1。如果环境问题实在解决不了我的做法是先放一放刷两道题回过神。等大脑切换到算法模式后再带着更清醒的状态去排查环境问题。有时候你换个角度反而能找到之前忽略的配置错误。4.3 一个实用的“热力图”建议把精力花在核心题型上Hot 100的“普通数组”虽然只有十来道题但每一道都值得做三遍第一遍看题解后自己敲出来理解思路。第二遍隔两三天不看题解自己写。第三遍一周后把解题思路用文字或者口头讲出来假装在给朋友解释。这里我想特别说明第三遍才是最重要的一遍。能讲清楚才说明你真正理解了这个解法。如果你发现自己讲的时候磕磕绊绊说明还有细节没想透这时候再回看题解效果比反复刷十遍都强。5. 从第24天到长期坚持一些可复制的习惯与心态调整5.1 固定作息比固定题目数量更有效“第24天”这个记录方式本身就是一个好的习惯养成标志。如果你每天都记录“第X天”说明你在潜意识里已经把编程学习和刷题变成了日常任务这比一次性猛刷一天然后歇一周强得多。我自己的经验是不要给自己定“每天必须刷3道题”这种过于刚性的目标因为一旦某天没完成会产生挫败感第二天就懒得继续。更合理的做法是每天只规定一个“最低动作”比如“打开IDE看一道题思考5分钟”无论能不能写出来都算完成。这个门槛低到不可能失败反而能让你每天都在接触算法思路长期积累远超间歇性爆发。5.2 善用“碎片时间”复习旧题很多人觉得刷题必须坐一整块时间其实不是。如果你已经刷过一遍某道题完全可以在通勤或排队的碎片时间里用手机看题目然后闭眼想思路。想不起来了再翻一下题解。这种“闪回式复习”对巩固记忆特别有效。我曾在碎片时间里把“普通数组”中的几道题反复在脑子里推演比如“除自身以外数组的乘积”为什么可以先算前缀积、再算后缀积。这个思路一旦在脑子里滚瓜烂熟面对同类题时基本不会卡壳。5.3 不要轻视“普通”二字最后想提醒一句“普通数组”听起来普通但它其实是很多复杂题目的基础模块。双指针、滑动窗口、前缀和、差分、哈希表优化……这些技巧都能在“普通数组”题里找到缩影。如果把算法基础比作盖房子数组就是地基。地基打得不牢后面学到二叉树、图论、动态规划进阶题时会格外吃力。这也是为什么我特别建议这个阶段的人不要急着跳到难题而要把“普通数组”里每一道题的思路迁移能力练好。比如今天刷“合并区间”你学会的是“排序 合并”这两个动作明天遇到“插入区间”你会发现思路几乎一样。这种迁移能力只能在认真对待“普通”题目的过程中慢慢培养。安了半天环境刷了一会儿数组这一天看起来能力毫无提升但如果你坚持记录到第100天回看这个第24天你会感谢那个没有放弃的自己。
RELATED

相关推荐

LeetCode Hot100普通数组五题详解:从暴力到最优解与Web环境排查

LeetCode Hot100普通数组五题详解:从暴力到最优解与Web环境排查

0x3f 第24天。先报个流水账:白天几乎没有写自己的代码,时间全泡在“黑马web”课程上,安装环境、配依赖、跑通 demo,真正坐下来敲业务逻辑的时间反而没多少;晚上回到 LeetCode Hot100,终于把“普通数组”这一…

📅 2026/10/22 20:00:16
智能体插槽设计:强类型能力接入接口详解

智能体插槽设计:强类型能力接入接口详解

1. 为什么“插槽”这个词突然在智能体开发圈火了? 最近在几个技术社区刷到高频词——不是“多模态”,不是“RAG”,而是“插槽”。有开发者发帖说:“给Agent加个记忆模块,结果发现框架根本不认我的类,查了半…

📅 2026/10/22 19:55:15
Nginx配置工作手册:覆盖反向代理、负载均衡与排错实战

Nginx配置工作手册:覆盖反向代理、负载均衡与排错实战

简介:面向Linux运维与后端开发初学者的Nginx系统学习资料包,围绕反向代理、负载均衡、服务集成等核心场景,以基础/进阶/架构/模块四阶段大纲串联知识点,并配有可动手验证的配置案例与Nginx启动流程、HTTP配置块解析图,…

📅 2026/10/22 19:55:15
MORE NEWS

更多资讯

📰

基于SpringBoot+Vue的养老公寓管理系统:企业级架构与健康预警闭环解析

做了几年医疗健康类信息化项目,养老公寓管理系统这套东西一直是我觉得“看着简单,做起来全是细节”的典型。很多刚入行的朋友一听到“养老公寓管理系统”,第一反应就是“不就是个带老人信息管理的CRUD吗”。真拿下一个企业级项目的时候&#…

📰

反向传播与自动微分:PyTorch中梯度计算的原理与实践

1. 从链式法则到反向传播:为什么这一步必须学扎实 做深度学习也好几年了,带过不少新人。每次讲到 Back Propagation(反向传播)这一节,我都要专门停下来,因为这是一个分水岭——懂不懂反向传播,直…

📰

LangGraph实战:用图编排搞定复杂智能体流程

做应用层的朋友应该都有同感:模型本身往往不是最难的,真正难的是把模型塞进一条会转弯、会分叉、还会重复执行的业务流水线里。我帮某电商业务搭智能客服时,需求其实很朴素——用户进来先判断意图,查订单的走查询工具,…

📰

学术速递信息筛选与论文解读实战:从信息源到日更体系

1. 一份学术速递背后的信息筛选逻辑每天早上八点半,我习惯性地打开几个固定的信息源,扫一遍过去24小时内冒出来的新论文。这个动作从读研那会儿就开始了,到现在做了快十年,已经变成了一种肌肉记忆。2月23日这一期的学术速递&#…

📰

自动驾驶基座模型:从多模态感知到决策能力升级

前阵子海外GPU技术峰会刚结束,朋友圈几乎被一个词刷了屏:基座模型。尤其是一家长期专注L4级自动驾驶的公司,趁峰会窗口放了基座模型的新进展,并且把“自动驾驶”和“AI能力体系”放进同一个叙事框架。这组合乍看起来有点反差——一…

📰

Spring AI Alibaba停更后,Java AI应用开发的工程化选型与落地实践

1. 一个停更消息引发的技术选型焦虑前几天在技术群里看到有人转了一张截图,说 Spring AI Alibaba 这个项目停更了,紧接着群里就炸了锅。有人感叹“Java 在 AI 这条路上果然走不通”,有人开始盘算着要不要转 Python,还有人直接甩出…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬