Day1: 开始学习演算法和资料结构的契机

https://ithelp.ithome.com.tw/upload/images/20210901/20128604mxDLH8hPvi.jpg
近期面试掀起了一波考演算法的风气,就好像回到大学指考那样,老师说这题会考一定要记起来,因此掀起了一股leetcode刷题的风潮,甚麽经典考题都要写过一遍,刚开始试图想要先理解一些演算法的概念再开始刷题,不过网路上找的资源对於我这个演算法麻瓜并不是这麽的亲民,再加上用javaScript实作演算法的文章少之又少,所以就决定直接刷题刷起来!

初期不理解演算法和资料结构也可以刷题刷得很开心,但是到後面就开始卡住了,binaray tree是甚麽? linked list好像是阵列但又好像不是?同样的题目为甚麽别人的解法执行时间可以少我一半?心里渐渐浮现了一万个为甚麽,再加上进期面试有被考到一题"请将排序阵列里的数字由小到大",我心想这真是太简单了,准备写下arr.sort((a, b)=>a-b)的时候,看到题目後面一行小小的字,不能使用sort请用任意一个排序演算法做排序,当下就愣住了,我连排序演算法有哪几种都不知道,一直以来都很习惯用程序语言提供的现成方法,没自己造过轮子,於是决定自己应该要来好好了解演算法和资料结构了。

https://ithelp.ithome.com.tw/upload/images/20210901/20128604XCSk8enagx.jpg
目前透过线上教学课程以及看书的方式来学习演算法,非常推荐白话演算法这本书(这不是业配),学演算法最痛苦的就是吸收不了艰涩难懂的理论,这本书拯救了演算法麻瓜,真的把很多概念用很生活化的方式解释得相当清楚,而且不催眠可以阅读超过一小时,这非常重要!书中的例子是用python实作,如果不会python语法也没关系,只要有基本的程序基础都可以大概理解程序码的意思。

不过很多演算法概念看的当下可以理解,但是隔几天再去看就会觉得很陌生(脑海中的橡皮擦),因此督促自己在学习的同时,也要动手写文章帮助自己吸收,因此这一系列的文章比较会像是我最近学习演算法的笔记,希望接下来的30天我可以跟演算法和平共处。

文章目录

Day2: 什麽是演算法?— Algorithms
Day3: Big O — 时间复杂度与空间复杂度
Day4: [资料结构] Array —  阵列
Day5: [资料结构] - Map
Day6: [资料结构] -  Set
Day7: [资料结构]Stack —堆叠和Queue— 伫列
Day8: [资料结构]Hash Table - 杂凑表
Day9:[资料结构] Linked-List - 链结串列
Day10:[资料结构] Graph - 图
Day11:[资料结构]Binary Tree - 二元树
Day12:[资料结构]Binary Tree -  Traversal
Day13:[解题技巧]Two pointers -  双指针
Day14:[解题技巧]Recursive - 递回
Day15:[搜寻演算法]Linear Search - 线性搜寻法
Day16:[搜寻演算法]Binary search - 二分搜寻法
Day17:[排序演算法]Selection Sort - 选择排序法
Day18:[排序演算法]Selection Sort - 选择排序法
Day19:[排序演算法]Bubble Sort - 气泡排序法
Day20:[排序演算法]Selection Sort - 选择排序法
Day21:[排序演算法]Heap Sort - 堆积排序法
Day22:[排序演算法]Merge sort - 合并排序法
Day23:Greedy Algorithm - 贪婪演算法
Day24:Enumeration - 列举法
Day25:Dynamic Programming(DP) - 动态规划(上)
Day26:Dynamic Programming(DP) - 动态规划(下)
Day27:Backtracking -回溯法
Day28:八皇后问题- 8 Queens Puzzle
Day29:刷起来! leetcode
Day30:完赛心得


<<:  新新新手阅读 Angular 文件 - Day01

>>:  Golang 初心者村

Day 01:入坑 Angular 的前因後果

前因 本身是个有十年以上平面设计经验的转职者,因为接触 Side Project,而开始从切版接案接...

【LeetCode】Binary Tree

大部分会碰到的是 Binary Tree 和 Binary Search Tree。 常见错误:nu...

【资料结构】图的表示方式与基本运作

图的基本定义 图的表示方式与基本运作 表示方式 相邻矩阵 若G(V,E)是含n个顶点的图,表示图G的...

找LeetCode上简单的题目来撑过30天啦(DAY8)

题号;100 标题:Same Tree 难度;Easy Given the roots of two...

Day 13 Docker 安装

由於 Docker 是以 Linux 为其原生开发,所以在大部份的 Linux 系统上都可以直接安装...