算法成神之路,请看这一篇!

随着自己写的越来越多,慢慢的就会有人和我主动交流,现在好多人希望我写一篇考研、就业的选择、零基础如何学习编程,秋招如何选择offer、等等

我以前写过一篇初入阿里---10 天,我自己还想写一篇在阿里的三个月,将中间的点点滴滴分享给大家,还想写一篇自己的思考、和打法战略,以及你们 99% 的人欠缺的一种能力,还有自己的技术路线的分享,目前是 C 之旅

要写的东西实在太多了,而我目前写公众号的时间,按一周时间计算,不能超过我睁眼时间的 1%,我 99% 的精力在其他地方,希望大家可以理解我,刚入职,还需要各方面能力的提升

今天在这里着分享一波:数据结构与算法怎么学,以及今天为什么会写这块,真的是应了大部分读者的要求

三个原因

1、数据结构与算法真的是至关重要,我可是当年在写基础知识的时候,放到了第一位,公众号历史文章都有啊,你们要好好看

2、不断的有人私聊问我在这方面的学习经验,我觉得是时候给你们分享一波了

3、前一段时间总有人私聊我,给我推荐什么 google 的数据结构与算法课程,让我报名,我都很客气的说了一声:谢谢啊,暂时不需要,还一直说是特别好,一定要报,我之前忙于工作,今天就统一回复一下

不是一两个人私聊我,从半个月前到现在,大概十几个人吧,我真的是醉了,课程好,你自己觉得合适,报名就对了,给我推荐,也没问题,我自己不报,还一直说做活动,便宜,讲的特别好,不报对我是一种巨大的损失之类的话,对于这部分人,我都直接拉黑、删除掉了

在这里,好多人我没回,说一声,我真的是不需要,我相信,我应该比绝大部分人检索资料、信息的能力要强,以及接触信息的渠道要多,有些事情,不是我不知道,是我不需要,选择性的过滤了,有什么好的,我也希望大家多多给我分享,但是不要强人所难

说真的,数据结构与算法,我的水平还算可以吧,给我点时间,准备准备,也是可以讲讲的,我当年在实验室,可是经常的给学第、学妹讲过这方面的课程,自己对其理解也是很深刻的

数据结构

对于我自己来说,秋招中的众多知识点,比如:操作系统、计算机网络、Linux、数据库、C、C++、数据结构、算法、项目之类,我自己最最最擅长的就是数据结构与算法

举个例子:面试官问我,红黑树了解吗?

我的回答是:我会从树--->二叉树--->完全二叉树--->AVL树--->红黑树--->B+/B-/B*树,以及四叉树、八叉树等等

我先讲为什么需要这种数据结构,出现的背景是什么,解决什么问题,将关于树的整个体系系统都讲出来

我在秋招的时候,是可以手写 AVL 树、红黑树、B+/B-/B*,图的邻接矩阵、邻接表,最短路径、迪杰斯特拉算法(Dijkstra算法)弗洛伊德算法(Floyd算法)等,所以自己对于数据结构是特别的自信,对于面试官问我,我都是说自己数据结构掌握的还不错,一定的有自己擅长的技术栈,这才是你与别人不一样的地方,是你自己的优势所在

资料推荐

1、数据结构:

<大话数据结构>

清华大学严蔚敏的 <数据结构>,C C++版都有

这  2 本书都不错,上面的适合新手入门,下面的书籍适合进阶提升

视频:

黑马郝斌的 C 语言、数据结构,我都看过,讲的是真不错,特别适合Linux C/C++ 方向的同学去学习

C 语言:

https://www.bilibili.com/video/av8074534/?p=180

数据结构:

https://pan.baidu.com/s/1qQrHTdkvxMLSGv7G4nHWBw 
密码:4o9p

说真的,b 站还是有很多的好东西,一定要善于去发掘、去寻找好的资源

2、算法

<啊哈算法>,入门级别学习合适

<编程之美>、<算法导论>,进阶提升必看

<剑指offer>,LeetCode 找工作必备,刷至少 2 遍

视频:

推荐一个网站:七月算法

算法导论:

https://pan.baidu.com/s/1Bm34-92TwN5TbMOXfPkY6g 
密码:1i38

3、隆重推荐

适合于C/C++ java python 任何方向去学习数据结构与算法,我大学期间,学习与找工作,最常去学习的地方

牛客网,左神,应届生找工作的,逛过牛客网的,应该都知道左神的大名吧

在看看下面的课程:

左神的一本神书:

<程序员代码面试指南:IT名企算法与数据结构题目最优解 左程云著>

java 写的,有需要的可以买一本学习

我首先说明一下,我没有给任何网站打广告,我就是把自己当年走过的路,自己通过什么资料,什么视频,在什么网站进行学习,真实的分享给大家,有用的,你们借鉴,没用的,觉得我这个方法过时了,完全可以不必理会的

网址:

https://www.nowcoder.com/courses/semester/algorithm-elementary

算法之路

三步走战略:看视频 + 看书 + 刷算法

1、

我是在大二的下半学期开始接触的数据结构,我一开始的学习,是看书理解里面的简单逻辑,和听视频的讲解,也是边摸索边进行学习,对于那时候的自己,完全是小白水平

大二的下学期,可以说是在找学习编程的感觉,让自己激发兴趣,兴趣是最好的老师,一定的让自己喜欢上数据结构与算法,实现了什么数据结构或者做出了哪道算法,会对自己是一个正向的激励,会让自己有更大的兴趣,去解决更难的问题,记住:在什么阶段做什么难度的题

不要光刷题,一直想不出来,是很痛苦的一件事情,要学会用数据结构或者算法去解决项目中的实际问题,去做优化与改进,这块在大三的时候,结合着来,我不建议,太有针对性的去刷题

2、

大三的上学期以及寒假,是我主要学习数据结构与算法的大半年时间,在这个阶段,我逐渐脱离了视频(视频适合初级阶段,适合于大二学习),对于数据结构与算法,学到后期,必须的靠自己,不能在一味的依赖于视频中的讲解

我是这样的,通过看书,来实现一些数据结构,以及开始有针对性的提高自己的算法能力,数据结构,来回就那些东西,只要理清了之间的逻辑,思路清晰,反复的去实现几遍就好,难度相对于算法还是简单一些,数据结构,关键是理解数据与数据之间的存储关系,多做笔记,整理,疏通关系

算法,我觉得是挺有难度的,挺考验人的智商的,因为算法的实现思路,很奇特,刷过算法的,就懂,有些思路是取巧,有些是剑走偏锋,根本想不到,只能的先去看别人的思想,理解好,在实现出来

经常看别人的思路,不要觉得很丢人,这是正常的,不会了,实在想不出来了,就去看别人的实现思路,对于同一个问题,用不同的算法实现,带来的可是本质的区别,一定要有对时间复杂度有着极致的追求,去寻找最完美的解决方法,多思考,多花时间去理解清楚

3、

我当时,是拿小本本,对于数据结构和算法中,不清晰的地方,拿本子画清楚,不要光想,一定要动手去画,想明白了,理清了各种逻辑,代码的实现是很容易的,关键就是担心没思路,脑子是乱的

当时自己的时间安排,就是每天都会抽时间去学会数据结构,做几道算法题,去 leetcode 或者牛客网上面,从最简单的题刷起,说白了,这个就在于坚持,和自己有没有决心去学好

快找工作的时候,是必须要刷一波算法题的,刷的时间久了,你会慢慢的爱上它的,很有趣,很奇妙的感觉,以及带给自己莫名的快感,慢慢的你就会刷上瘾了,着迷其中

强调三点

1、需要明确一下:数据结构、算法需要掌握哪些知识点,这块,你翻看书的目录,以及看一些课程大纲都有写到,那块会很详细的有说明

数据结构:链表、栈、队列、字符串、矩阵、树、图

算法:排序、字符串、数组、递归、五大算法(动态规划、贪心。。。)

2、对于数据结构与算法的实现,不要纠结于C、C++、java、python、语言是其次,关键是实现的细节以及方法,选一门自己喜欢的语言,去学习数据结构与算法就好

3、书、视频,我都已经推荐过了,对于小白的话,建议先看看视频,理解理解,多听听别人思路,看看是怎么解题的,初步阶段,一定要选择简单的、自己能很快理解的去学习,由浅入深,慢慢的给自己信心

我想说的

算法的学习,别人帮不了你多少,主要还是的靠自己悟,靠自己花时间去理解,师傅领进门,修行在个人,算法讨论,思路分享,去牛客网看看,各路大神,各种解决思路,你一定会有进步的

 

一开始,学习数据结构与算法,是枯燥的,是乏味的,因为你还不够了解到它的魅力,但是时间久了,你真的会爱上它,离不开它,与你血肉相连,伴你编程终生,在以后的学习道路中(不仅仅是技术方面),都会潜移默化的对你产生影响

数据结构与算法,给我带来的是,逻辑缜密性的提升,对我的性格、做人都产生了影响,我是强烈的建议,大家一定的好好学习,悟出自己的学习之道,那么你的路将会走的更远,更久

原文地址:https://www.cnblogs.com/ysgcs/p/9742781.html

时间: 2024-12-16 10:55:45

算法成神之路,请看这一篇!的相关文章

算法大神之路----排序(冒泡排序法)

冒泡排序法 冒泡排序法又称为交换排序法,是由观察水中冒泡变化构思而成,气泡随着水深压力而改变.气泡在水底时,水压最大,气泡最小,而气泡慢慢浮上水面时,气泡所受压力最小,体积慢慢变大. 冒泡排序比较方式是从第一个元素开始,比较相邻的元素大小,如果大小顺序有误,则对调后进行下一个元素比较.直到所有元素满足关系为止. 冒泡排序法分析 冒泡排序法平均情况下,需要比较(n-1)/2次,时间复杂度为O(n2),最好的情况只需要扫描一次,不用操作,即作n-1次比较,时间复杂度为O(n). 由于冒泡排序为相邻两

FPGA成神之路 ----- 菜鸟的武器(edk 开发使用)

给大家介绍菜鸟的第二款武器.xilinx edk 开发软件. 武器介绍: 名称:Xilinx Platform Studio 功能:xilinx 系列FPGA利用MicroBlaze或硬核开发的必备武器,属于ise套装中的一部分.此武器很少单独出现,一般都是和他的爱妻SDK一同闯荡江湖. 武力:4星.(与sdk合体后,武力值翻倍) 推荐等级: 9级(学习MicroBlaze开发的菜鸟必备) 备注:本版本开发套件,为xilinx公司ise产品最后一个版本.优点多多,BUG也多多,这里的BUG在ED

Java工程师成神之路思维导图

前面看Hollis的微信公众号更新了Java工程师成神之路的文档,想着有时间把它画下来,画下来之后分享出来: 主要内容: 基础篇: 进阶篇: 高级篇: 推荐书籍: 扩展篇: 架构篇: 原文地址:https://www.cnblogs.com/liaoweipeng/p/8982164.html

转:Java工程师成神之路~(2018修订版)

转: http://www.hollischuang.com/archives/489 阿里大牛珍藏架构资料,点击链接免费获取 针对本文,博主最近在写<成神之路系列文章> ,分章分节介绍所有知识点.欢迎关注. 主要版本 更新时间 备注 v1.0 2015-08-01 首次发布 v1.1 2018-03-12 增加新技术知识.完善知识体系 一.基础篇 JVM JVM内存结构 堆.栈.方法区.直接内存.堆和栈区别 Java内存模型 内存可见性.重排序.顺序一致性.volatile.锁.final

大数据成神之路-Linux基础

Linux命令 我是小白,我从来没玩过Linux,请点这里: https://user-gold-cdn.xitu.io/2019/2/24/1691e1dda7807059 推荐的一个Git仓库 我有些基础,推荐一个快速查询命令的手册,请点这里: https://github.com/jaywcjlove/linux-command 大数据成神之路目录 大数据开发基础 Java基础 NIO 并发 JVM 分布式 Zookeeper RPC Netty Java基础 NIO 并发容器 JVM 分

033.[转] Java 工程师成神之路 | 2019正式版

Java 工程师成神之路 | 2019正式版 原创: Hollis Hollis 2月18日 https://mp.weixin.qq.com/s/hlAn6NPR1w-MAwqghX1FPg http://www.hollischuang.com/ 主要版本 更新时间 备注 v1.0 2015-08-01 首次发布 v1.1 2018-03-12 增加新技术知识.完善知识体系 v2.0 2019-02-19 结构调整,更适合从入门到精通:进一步完善知识体系: 新技术补充: 1 基础篇 01 面

算法大神之路----排序(选择排序法)

选择排序法,顾名思义,就是把特定的数据选择出来进行排序. 选择排序法有两种方式 在所有的数据中,当由大到小排序,那么就将最大值放到第一个位置 如果由小到大排序,那么就将最小值放到第一个位置 以由小到大排序举例,当排序时候,扫描整个数据,拿第一个依次与其他做比较,如果其他数据比第一个大,或者相等,那么就不交换,如果其他数据比第一个数小,那么就交换二者的位置,扫描结束后,则从第二个数开始,依次扫描. 方法分析 无论是最坏还是最好情况,甚至是平均情况下,都需要对全部数据进行扫描,找到最大或最小值,因此

算法大神之路----排序(插入排序法)

插入排序法 所谓插入排序法乃是将一个数目插入该占据的位置. 输入一个元素,检查数组列表中的每个元素,将其插入到一个已经排好序的数列中的适当位置,使数列依然有序,当最后一个元素放入合适位置时,该数组排序完毕. 代码示例: import java.util.Random; /** * 算法大神之路----排序(插入排序法) */ public class Study03 { public static void main(String[] args) { //新建一个数组 int[] arr = n

前端性能优化成神之路-总结

首先来看一下前端性能优化所涉及的层面有如下四个:网络层面,构建层面,浏览器渲染层面,服务端层面 具体的优化点有:资源合并与压缩,图片编码原理和类型的选择,浏览器的渲染机制,懒加载与预加载,浏览器存储,缓存机制,PWA,Vue-SSR等等 首先来了解一下web前端的本质 web前端的本质是一种GUI软件,是可以直接借鉴其他GUI系统架构设计的方法,但是web前端有点特别 下面是CS架构的GUI软件的开发和部署过程,CS架构的GUI软件在用户从商店下载下来后,是一个APK包,通过解压安装到手机的操作