Redian新闻
>
初学者在力扣学习算法应该刷哪些题?

初学者在力扣学习算法应该刷哪些题?

公众号新闻

前言

首先,大家要明白一个点,那就是我们刷题不是为了去刷题,刷题的目的是为了巩固数据结构与算法,那么也就是说刷题前我们就要学完一遍常见的数据结构与算法。

不管是数组、树、堆等,最终对应在内存中的存储方式只有两种:数组(顺序存储)、链表(链式存储)。


含义解析

数组由于是紧凑连续存储,可以随机访问,通过索引快速找到对应元素,而且相对节约存储空间。但正因为连续存储,内存空间必须一次性分配够,所以数组如果要扩容,需要重新分配一块更大的空间,再把数据全部复制过去,时间复杂度 O(N); 而且如果想在数组中间进行插入和删除,每次必须搬移后面的所有数据以保持连续,时间复杂度 O(N)。


链表因为元素不连续,而是靠指针指向下一个元素的位置,所以不存在数组的扩容问题;如果知道某一元素的前驱和后驱,操作指针即可删除该元素或者插入新元素,时间复杂度 O(1)。但是正因为存储空间不连续,你无法根据一个索引算出对应元素的地址,所以不能随机访问;而且由于每个元素必须存储指向前后元素位置的指针,会消耗相对更多的储存空间。

刷题准备

刷题之前,我们需要知道怎么去刷,按什么顺序刷题,应该根据需求来:

如果是为了拿大厂 offer,那么在力扣上刷够大概 200 道经典题,注意不是重复刷简单题,是分门别类的刷;

如果是想长期系统的学习算法,提升自己的学科素养,建议按类型刷题,分门别类的学习、总结,有针对性的提升;

入门技巧

在最初的阶段,算法世界的大门刚刚打开,这个时候迷茫是正常的,解决迷茫的要诀在于少想多做,勇往直前。

首先可去了解下《算法导论》或者是站内的 👉 《一本吃透数据结构》这些书籍可以算是初学者开启算法大门的第一步,着重在于开阔算法视野。

入门阶段花费时间因人而异,大约在 3~6 月之间,将上述提到的书籍选择其中一本看完基本就能入门了。在这个阶段中,需要了解几类常用的算法:

1. 常用的数据结构:数组、字符串、链表、树(如二叉树)等

2. 常用的算法:分治、贪心、穷举、动态规划、回溯、二分算法、深度优先搜索等

没有概念的可以看下图:

其中,暴力枚举、贪心算法容易理解,可以很快上手。数论相关的算法需要用到一些数学技巧,包括位运算、幂函数、求模等等性质。二分算法和深度优先搜索算法相对有些技巧性,好在他们都有固定的模板。另外,不得不提的是,深度优先搜索算法的思想非常重要,而且深度优先搜索是动态规划、分治和回溯的基础,需要重点掌握。
在此过程中,可以辅以力扣中的简单题目,它们往往都代表了一类经典算法。

例如:

👉 70.爬楼梯

动态规划 算法的经典题目,通过此题目可以了解状态、边界条件、状态转移方程等基本概念。


👉 112.路径总和

深度优先算法 的入门题目,递归实现和迭代实现都不难,可以学习到深度优先算法的层层嵌套搜索、找到答案或到达边界停止的基本解题思路。


👉 35.搜索插入位置

二分算法 的典型题目,使用二分算法的解题模板可以轻松解决,二分算法的算法思想清晰明确,一通百通。


👉 169.多数元素

分治算法 的简单题目,如果我们知道数组左边一半和右边一半的众数,我们就可以用线性时间知道全局的众数是哪个。这道题妙就妙在可以有多种解题方式,让初学者至少可以写出暴力枚举算法 AC 题目,然后再逐步深入,优化算法。


👉 944.删列造序

这是一道 贪心算法 的简单题目,贪心算法理解简单,上手容易,适合作为初学者掌握的第一个算法。

学习算法讲究融汇贯通,需要和理论结合,如同阅读了一本武功秘籍,心法和事件是两码事。

实战练习非常重要,不经过实战练习,理论仅仅是纸上谈兵。比如,不经过大量练习,永远不会知道二分算法是多么容易出现死循环。一个边界条件控制不好,程序就会显示无情的 "Time Limit Exceeded"。在 20 分钟的调试后,或许仅仅是将 while (left <= right) 改为了 while (left < right) 。程序员说到底也是手艺人,这一个字符的改动,正是 "台上一分钟,台下十年功" 的体现,需要在大量的练习中才能理解两者之间的不同作用。


再比如,动态规划算法中,递归的函数就像是《盗梦空间》中的"梦中梦",一层套一层,又渐次展开,很难整体把控。在不断的练习后,才会知道,动态规划算法的重点是抓住动态转移方程,只处理两个状态之间的过渡和边界条件,慢慢"大事化小,小事化了"。


这一阶段的时间将会非常漫长,伴随着不断地摔倒、爬起,你会对每类算法逐渐融会贯通。好在这个阶段不看天赋只看勤奋,每次从坑里爬起,都是献给成长的一份力量。


推荐的进阶书籍有 👉《动态规划图文学》,本书适合有基本的数据结构与算法基础的学习者或者想要进一步提升算法与数据结构解题能力及实际应用能力的学习者。能够让大家补充掌握两种线性动态规划问题且熟悉树形动态规划、图上动态规划、概率动态规划与博弈动态规划的类型概念与解题思路。

下次我们将讲解哪些题适合进阶的题解经典题。评论留言少 BUG !点赞转发不脱发!


BY / 

本文作者:力扣

编辑&版式:Janson

声明:本文归“力扣”版权所有,如需转载请联系。


点个在看,少个 bug

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
破纪录!2022年中国学者在Nature及Science共计发表267篇文章,高校清华、北大、浙大前三加拿大大学被曝欺骗留学生,克扣学费!留学中介利用信息差骗国际留学生上私校如何提升深度学习算法效率,谷歌有这些绝招第42条法规本周三到期 纽约市将无法应对移民大量涌入 市长请求援助深度学习先驱者 Geoffrey Hinton 发布新深度学习算法世界杯史上最争议的进球最高人民法院关于规范和加强人工智能司法应用的意见南洋理工发布量化交易大师TradeMaster,涵盖15种强化学习算法杭州内推 | 阿里巴巴淘系搜索算法团队招聘机器学习算法工程师达摩院算法团队招聘(实习/博后/全职):机器学习算法工程师,AI for Time Series与AIOps方向LeetCode 力扣官方题解 | 6. Z 字形变换正念减压法,找回内在力量揪心!中国学者在加拿大失联一周,所住民宿失火2死9伤5人失踪......一文详解缺陷检测的传统算法与深度学习算法(内附16篇前沿论文)LeetCode 力扣官方题解 | 258. 各位相加关于爱,我们从来都是初学者 | 如何拥有一段好的亲密关系?求助:UCSD中国学者在蒙特利尔大火中失联,寻求大家的帮助!Insight Time分享 | 基于序列决策和动作依赖的多智能体强化学习算法退休 12-陈婉丽以子试“毒”,用一颗糖丸,拯救3代中国人,今天,他是最该刷屏的明星!中国学者在加拿大火灾后失联,至今仍无果!全美房价10年来首次下降!美联储宣布加息25个基点!警犬抓捕犯人或被加州禁 曾对黑人施暴北京/上海内推 | 微软亚洲研究院DKI组招聘因果机器学习算法实习生眼歪嘴斜还能逆袭影后?!为啥娱圈真正的高层都在力捧她…技巧篇|算法小白如何快速且高效的刷力扣题?西班牙语如何入门?初学者必备4大学习App推荐,评分官名师独家西语入门指南!5天突破GRE阅读瓶颈?刷完这些题就够了!一个成都男孩的故事(白纸运动纪实文学)关于爱,我们从来都是初学者丨如何拥有一段好的亲密关系?如何做前空翻(初学者)LeetCode 力扣官方题解 | 2016. 增量元素之间的最大差值漫步于优胜美地巨杉森林上海/北京内推 | 百度商业研发部模型团队招募机器学习算法工程师/实习生Mt. San Jacinto via Marion Mountain_2021-06-06【自学干货】拉丁语如何有效入门?适合初学者的书籍、播客和视频学习资源盘点!招聘 | 阿里巴巴淘系搜索算法团队-机器学习算法工程师-社招
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。