刷穿剑指offer-Day04-第一章结束,聊聊算法学习

简介: 刷穿剑指offer-Day04-第一章结束,聊聊算法学习

昨日回顾


昨天我们介绍了求余和快速幂的相关知识,并且讲解了力扣50.实现pow的题目,主要是想让大家在理解了快速幂的实现,毕竟这是一道高频的面试考题。

但如果在算法机试或者平时开发时,还是使用内置的pow更为便捷,没必要重造轮子。


关于书中的题目


这章节今天就结束了,大家会说剑指offer中第三、第五题还没有讲。在这里需要解释下,虽然说的是刷穿剑指offer,但更多的是希望通过剑指offer这本书的整体将结果,帮我们梳理数据结构与算法的学习思路与顺序。

对于4道二进制题目,咱们挑选2道题学习掌握即可。第五题和第四题共性颇多,而第三题个人认为,应该在动态规划那章节去讲解更为合适。

后续每章节的讲解也是如此,不会照本宣科的每道题都讲一遍,而是在挑选经典题型的同时,补充一些我认为在该数据结构下同样重要、高频的考点进行讲解。欧大家有其他更好的想法,欢迎互相讨论,毕竟我们共同的目的是能学好算法。


整数内容就这些?

算上开篇讲的整数类型、二进制、与或非、取模、快速幂,整数的考点就这些了么?远远不止....

个人觉得整数的题目,是最趋近于数学思维的题目。比如以下三道幂运算的题目:

  • 231.二的幂
  • 326.三的幂
  • 342.四的幂

这些都在整数与数学的范畴内,大家如果感兴趣可以抽时间看下这三道题目。再比如力扣常见的丑数、质数、快乐数、笨阶乘、好数字的数目等等类型数不胜数。对于整数相关题目,不像二分、链表、二叉树等有固定的模板和套路,需要大家针对不同类型的题目多做总结,多思考。


关于刷题的疑问


借着本章的结束,想和大家讨论讨论关于算法刷题的一些疑问。虽然因为种种原因,间断性刷过几次力扣、牛客,但从今年2月才开始保持每天刷题、打卡和写解题的习惯。如今半年多过去了,算算刷了500多道题。作为和大家一样还在算法学习路上挣扎的难兄难弟,经常会听到朋友们的有如下问题:

  1. 算法刷题,做多少道题就能通过面试?
  2. 我准备面试,怎样一个月提升算法技能?
  3. 为什么刷过的题,回过头来又忘记了?
  4. 一道题想了几个小时,还是不知道怎么做,该去看题解么?
  5. 学习算法该按照类型刷,还是随机刷?
  6. 为什么看题目不会做,但一看题解觉得好简单?
  7. 明明做过同类型的题目,但遇到新题为什么还是做不出来?

差不多就这些问题了,不敢在问了....


一些个人观点


每个人的基础与学习方式都是不同的,没办法做到复制,但方法是可以借鉴的。今天就聊聊我这半年来的学习方式,顺便在过程中回复以上问题。如果大家觉得其中有哪些适合你,可以作为借鉴。


数量不等于能力

举个最简单的例子力扣的上有145多道位运算的题目,你把这145道都做了,然后面试考你一个简单的排序,凉了....举这个例子要说明的就是刷题要按照分类来,每种类型的题目你都要做过几道,才能面试的时候有思路,可能通过....


如何一个月速成

先来劝退那些临时抱佛脚,想一个月提升算法技能的朋友。坦白说我给不出什么建议,因为这个时间太短了,如果有机构说一个月就能全面提升算法技能,那要么是炼狱般的难度,要么就是骗你的...打开力扣标签,几十种算法与数据结构分类,每中算法一天一个月也不够。别说你一天做或者背多少道题,一天背50个单词第二天还忘一半呢,别说一天做多少道题。起初一天就十几道题的照抄方式,过一周回过头来绝对忘得一干二净。大家做过的每一道题,都需要时长去复习、二刷、甚至去N刷。举个最简单的例子 79. 单词搜索这道题我反反复复至少刷了5、6遍,就是因为对递归、记忆化等思想太陌生了。


题目一直没思路怎么办

有的朋友遇到题目,就一定要做出来,想破头的也要想出个答案。结果一道题卡一两天....我日常刷题,如果一道题半个小时还没思路,那不用想了,肯定是这个题目涉及的知识点我没学过或者没掌握,果断去看题解,然后下来把题目对应的知识点学习一遍,再找同类型的题目检验学习成果。不要一味的死磕去浪费时间。


刷题方式与顺序

对于初学的朋友,建议一定要按照数据类型挨个去刷题,这样不仅能积累扎实的基础知识,也能在学习的同时不断巩固。至于随机刷题,等到所有数据结构和算法都学习完了再开始吧,力扣的每日一题对新手并不友好...


几行代码的题我不会

之前经常会遇到这种情况,一道题有思路但就是想好久做不出来,一看题解恍然大悟,我就是这么想的,我写的跟它差不多,就是那几行代码我没想明白。嗯,抱歉,没想明白就是没想明白,一行错也不能通过。还是你对这个知识点没学透彻,再学一遍吧。


遇到同类型题目还是不会做

和上面的类似,一样是这个类型的知识点没有充分掌握,或者是知识点的变种与延伸性掌握不足,接着刷就对了。


笔记的重要性

最后想强调的就是做笔记的重要性,当前刷了550道题,写了260道题解,本身将知识复述给他人,就是一个二次学习的机会。你在总结题解的同时,不仅方便了自己后期复习,也可以在这个过程中帮你梳理脑海中的知识体系。

另外还有一个好处,当你的题解有人点赞或者评论时,喜悦是一方面,更多的是你会点到这个题解里面看看这是什么题,当时是怎么做的,相当于你拥有了一个不定时复习的题型系统,简直不要太赞。

今天说了很多与刷题无关的内容,仅为了分享一些关于自己刷题过程中的总结,觉得对你有帮助的可以借鉴,觉得说的不和你意的,望轻喷。。。




相关文章
|
2天前
|
NoSQL 算法 Java
【redis源码学习】持久化机制,java程序员面试算法宝典pdf
【redis源码学习】持久化机制,java程序员面试算法宝典pdf
|
3天前
|
机器学习/深度学习 算法 网络架构
什么是神经网络学习中的反向传播算法?
什么是神经网络学习中的反向传播算法?
9 2
|
3天前
|
机器学习/深度学习 算法
算法人生(5):从“元学习”看“战胜拖延”(没兴趣版)
元学习是让机器学会学习策略,适应新任务的机器学习范式。通过定义任务分布、采样任务、内在和外在学习循环来优化模型,增强其跨任务适应性和泛化能力。面对不感兴趣的任务导致的拖延,我们可以借鉴元学习的思路:重新评估任务价值,寻找通用兴趣点;设定奖励激发行动;改变环境以提高执行力。通过调整视角、自我激励和优化环境,可以克服因无兴趣而产生的拖延。
|
3天前
|
机器学习/深度学习 存储 算法
算法人生(4):从“选项学习”看“战胜拖延”(担心失败版)
选项学习是强化学习的一种策略,通过定义、学习和切换选项来解决复杂任务,将大任务分解为可重复使用的子任务,以提高学习效率和适应性。面对因担心失败而拖延的问题,我们可以借鉴选项学习的思想:将大任务拆分为小目标,正视失败作为成长的一部分,回顾成功经验并寻求支持。通过这种方式,逐步增强自信,降低拖延现象。
|
3天前
|
算法 网络协议
【计网·湖科大·思科】实验三 总线型以太网的特性、集线器和交换机的区别、交换机的自学习算法
【计网·湖科大·思科】实验三 总线型以太网的特性、集线器和交换机的区别、交换机的自学习算法
8 1
|
3天前
|
机器学习/深度学习 算法
应用规则学习算法识别有毒的蘑菇
应用规则学习算法识别有毒的蘑菇
|
3天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】关联规则学习:Apriori算法详解
【4月更文挑战第30天】Apriori算法是一种用于关联规则学习的经典算法,尤其适用于购物篮分析,以发现商品间的购买关联。该算法基于支持度和置信度指标,通过迭代生成频繁项集并提取满足阈值的规则。Python中可借助mlxtend库实现Apriori,例如处理购物篮数据,设置支持度和置信度阈值,找出相关规则。
|
3天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
|
3天前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
|
3天前
|
机器学习/深度学习 算法 前端开发
Scikit-learn进阶:探索集成学习算法
【4月更文挑战第17天】本文介绍了Scikit-learn中的集成学习算法,包括Bagging(如RandomForest)、Boosting(AdaBoost、GradientBoosting)和Stacking。通过结合多个学习器,集成学习能提高模型性能,减少偏差和方差。文中展示了如何使用Scikit-learn实现这些算法,并提供示例代码,帮助读者理解和应用集成学习提升模型预测准确性。