关于算法学习和刷题的建议

news2024/9/27 5:42:51

大家好,我是方圆。最近花时间学了学算法,应该算是我接触Java以来第一次真正的学习它,这篇帖子我会说一些我对算法学习的理解,当然这仅仅是浅浅的入算法的门,如果想深挖或者是有基础的人想提升自己,我觉得这篇文章不合适;如果你是算法小白或者是大一、大二有充裕时间的同学,它可能真的稍微有一点点帮助。

1. 交代背景

非科班转码近两年才开始学习算法,之前一切的算法知识全部来自《算法图解》(一本基础性的漫画算法小册)和百来到LeetCode题目,这也导致了我算法知识全是一块一块的,完全没办法衔接起来,面试题也仅仅只是对刷过或类似的题能解,纯纯复刻高三“题海战术”。

在这里插入图片描述

2. 算法学习开始的契机

一次工作的间隙,正得意于自己提交的代码如此“简洁”时,便听见了“方圆,你看看这个方法,可以一次遍历完成,但你做了两次遍历,而且还不好读!”

这番提醒对我来说是当头一棒,心想“你这小欻欻!敢对我的整洁代码有意见?!”,便强装嘴硬:咱俩考虑这个方法的角度不同,吧啦吧啦解释一番…

但我回头还是把这个方法的执行逻辑改了,这开始让我意识到,我对算法很不敏感,也从来不会在时间复杂度上去考虑问题,从此便埋下了算法学习的种子。

而种子的开花结果是在某算法大佬直言不讳下催化促成的。一次有幸向大佬的算法开源仓库提交章节贡献,本以为自己写的逻辑清晰,简单易懂,但是在大佬的严格审核下,被批的体无完肤:“你可能更适合写一些便基础的内容…”,一下就让我不值几两的自尊心粉碎,发誓不学好算法不罢休。

3. 学习路线

接下来是主要内容,分算法和LeetCode两部分。知识的来源全部来自书,没有视频,我个人也不倾向选择视频学习,我觉得书籍在很大程度上是知识最好的传播媒介。

算法

  • 《算法(第四版)》: 思来想去我还是想把这本书放在最前面,虽然它是一本不太好读的大部头,翻译欠佳(比如把指针/Java引用翻译成链接…),但是如果你有耐心且时间充裕的话,还是希望你能够选择去读经典的书籍。做一做它每个章节后边的习题,你会在这本书上花很多很多时间,我也相信你因此会有很大的收获。从我这两年陆续读技术书的体验来看,还是推荐以经典为主,素人/网红/大Tittle名人写的书优秀内容较少,有发展粉丝经济的嫌疑。
  • 《Hello 算法》: 如果你刷过剑指Offer的话,那你应该对它的作者比较眼熟。这是一本开源的算法入门电子书,其中所有的内容我全部看过,很用心也很有启发性,但是它还没有完结,不过因此的好处是你可以借此机会去仓库贡献内容。即使你读了上一本书,这本书也必读,而且我建议两本书一起读,先读这本书中的内容,再去《算法》中找相同的章节读,做一做后边的题目,这样能够降低一些《算法》晦涩的程度。
    书籍链接: https://www.hello-algo.com
  • 《数据结构与算法之美》: 你说你完全读不进去大部头,那行啊,可以看看这本,国人写得书,比较好读,而且它还结合了一些算法应用的实例,不过一些延展的例子讲得不深,让人觉得浅尝辄止,不过用来入门完全够了,总体还是推荐的。
  • 《算法图解》: 别读!别读!别读!太基础,所有的内容都能在上述书中找到且讲得更好。

LeetCode

  • 《LabuLaDong的算法小抄》: 也是一本开源的免费电子书,不过我觉得这本书太 “繁重” 了,只关注它的第零章动态规划二叉树部分的讲解就好,其他部分建议直接在刷题的时候看高赞题解。大家不要去买这本实体书,电子版内容就很全了,实体书很像是“XXXXXX”。
    书籍链接: https://labuladong.github.io/algo/di-ling-zh-bfe1b/
  • LeetCode高频题: 刷题一定要分类刷,先刷链表、再刷二叉树、之后刷动态规划、回溯和递归类型的题,其他的数据结构类、双指针类等其他类放在后面。我自己做了一个刷题的仓库,是我刷过的一些经典题,它不只是简单的分类,在每个分类里我也做了一些细分和必要的思考点,每道题都链接好了LeetCode题目,能点过去直接刷,比较方便。我觉得对算法入门来说应该是完全够了,刷题过程重要的还是要做好总结,因为题量越来越大,不可能每一道题都刷到,有了自己对题的理解和思考才是最重要的。
    LeetCode仓库: https://github.com/FangYuan33/LeetCode

祝大家学得开心

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/376186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】内核同步机制之等待队列和完成量

文章目录完成量和等待队列1. 等待队列1.1 基本元素1.2 等待队列的创建和初始化1.3 等待队列元素的创建和初始化1.4 添加和移除等待队列元素到等待队列2. 等待事件机制3. 等待队列唤醒4. 总结4.1 等待事件方式4.2 手动休眠方式4.3 借助内核封装函数,进行手动休眠5. 完…

前端开发_快应用开发

目录快应用官网真机调试组件组件嵌套问题tab组件list组件web组件css 样式问题[1]选择器[2]盒模型[3]样式布局-弹性布局[4-1]样式切换 - 类名的动态切换[4-2] 样式切换 - 行内样式动态切换[5]background[6]overflow[7]border-radius[8]盒子阴影[9] 单位系统接口[1] 检查某app是否…

机房运维6大隐患,你中了几个?

随着医院的看诊预约、缴费、打印报告等众多业务转至线上进行,对医院的网络及数据处理能力提出越来越高的要求,那么,机房的稳定、安全运行是医院网络信息系统的关键因素。 机房运维6大隐患 01.电源电力系统不稳定,网络设备运转遭到…

华为面试题就这?00后卷王直接拿下30k华为offer......

先说一下我的情况,某211本计算机,之前在深圳那边做了大约半年多少儿编程老师,之后内部平调回长沙这边,回来之后发现有点难,这边可能是业绩难做,虚假承诺很厉害,要给那些家长虚假承诺去骗人家&am…

红日(vulnstack)1 内网渗透ATTCK实战

环境准备 靶机链接:百度网盘 请输入提取码 提取码:sx22 攻击机系统:kali linux 2022.03 网络配置: win7配置: kali配置: kali 192.168.1.108 192.168.111.129 桥接一块,自定义网卡4 win7 1…

一文读懂云渲染“串流”全链路时延及优化策略

​这是一个让云游戏完美起步的时代。 云游戏作为产业内近年来炙手可热的话题,具有“云端运行、超高清、零延时、即点即玩”等众多特性。 随着 5G 时代的到来,以及中心云能力下沉至边缘云,高带宽、低延迟、高性能这些特性与云游戏紧密结合&a…

FastDDS-2.库概览

2. 库概览 Fast DDS(前身为Fast RTPS)是DDS规范的高效高性能实现,DDS规范是一种用于分布式应用软件的以数据为中心的通信中间件(DCPS)。本节回顾Fast DDS的体系结构、操作和关键特性。 2.1 架构 Fast DDS的架构如下图…

07_MySQL的单行函数

1. 函数的理解1.1 什么是函数函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率 ,又提高了可维护性 。在 SQL 中我们也可以使用函数对检索…

python之wheel 包命名规则、abi 兼容和安装

一、windows安装python包,遇见的问题 1、python3以后的版本,安装python包,可以直接使用pip安装,但是安装时偶尔报错 2、安装python源码包,如何确定自己该安装哪个版本,一看就晕倒~~~(没人扶&…

PMP新考纲考试难不难,通过率怎样?

PMP考试难不难,还是因人而异的,对小白而言,肯定是难的,对项目管理老人而言,难度肯定是没那么高。 据考过的朋友讲,新考纲是有点难度的,尤其是最开始6月25日的考试,2023年就简单些了…

职场性别报告,男女薪酬仍有差距,男性平均薪酬比女性高29.7%

性别是否影响职业?女性求职比男性更加困难?男性薪酬比女性更有优势?人们一说到警察、建筑师通常会想到高大魁梧的男性形象,一说到幼师、护士往往想到的都是温柔的女性形象,职业好似与性别挂钩;女性求职通常…

OnlyOffice验证(二)在Centos7上部署OnlyOffice编译结果

在Centos7上部署OnlyOffice编译结果 此处将尝试将OnlyOffice验证(一)DocumentServer编译验证的结果部署到Centos7上。并且使用其它服务器现有的RabbitMq和Mysql。 安装Nginx 先安装Nginx需要的依赖环境: yum install openssl* -y yum insta…

java本地搭建宝塔部署实战likeadmin后台管理系统源码 - server端(一)

大家好啊,我是测评君,欢迎来到web测评。 上次分享了那几期likeadmin的搭建视频教程,由于是php开发的,这对有些习惯用java开发的同学不太友好,好在这套系统也有java版本的,也有朋友让我录制java版的搭建教程…

1. 驱动开发--基础知识

文章目录1 驱动的概念2 linux体系架构3 模块化设计3.1 微内核和宏内核4 linux设备驱动分类4.1 驱动分类4.2 三类驱动程序详细对比分析4.3 为什么字符设备驱动最重要5 驱动程序的安全性要求5.1 驱动是内核的一部分5.2 驱动对内核的影响5.3 常见驱动安全性问题6 驱动应该这么学6.…

「TCG 规范解读」词汇表

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

66岁“硅仙人与23岁“硅神童”创业晶圆厂,年薪17万美元

美国小伙打造出家庭芯片工厂! 溅射、氧化、光刻、蚀刻、绑定、封装全包括! 主人公Sam Zeloof,当时是一名大四学生。Sam Zeloof 是 YouTube和 Twitter 上的网络红人。多年来,他一直在记录自己在车库中制造硅芯片的令人印象深刻的…

BI的作用,体现在企业的哪些方面

对市场异常敏感的商业世界自然不会放过获取数字经济的机会,以国企和央企为首的众多企业开始进行数字化转型,通过信息化建设,部署商业智能BI来完成转型工作。 为什么会出现BI 有一点可能出乎很多人意料,虽然 BI 是因为信息化、数…

【项目实战】从0开始入门JDK源码 - ArrayList源码

一、源码位置 一般来说IDEA配置好JDK以后 ,JDK的源码其实也配置好了,本文是基于JDK1.8的源码说明 rt - java - util - ArrayList 二、 继承关系图 ArrayList是实现了 List接口的 public class ArrayList<E> extends AbstractList<E> implements

消息中间件的概念

中间件(middleware)是基础软件的一大类&#xff0c;属于可复用的软件范畴。中间件在操作系统软件&#xff0c;网络和数据库之上&#xff0c;应用软件之下&#xff0c;总的作用是为处于自己上层的应用软件提供运行于开发的环境&#xff0c;帮助用户灵活、高效的开发和集成复杂的…

Word控件Spire.Doc 【书签】教程(1):在C#/VB.NET:在 Word 中插入书签

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…