殷东亮的博客

常用算法 — 贪心算法 [ Doc ]

Jun 25, 2022
算法

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪 ...

数据结构 — 堆(Heap) [ Doc ]

Jun 20, 2022
算法, 数据结构

介绍 # 堆(heap)分为最大堆(大根堆/大顶堆)和最小堆(小根堆/小顶堆),通常用完全二叉树实现,完全二叉树又可以用数组实现,故堆通常以数组形式的存储,而非二叉树的链式存储。常见的堆有二叉堆、裴波那契 ...

线上练习跟老外用英语对话

Jun 15, 2022
日常

五月到六月,由于疫情原因,被迫居家隔离了一个月,在家也特别无聊,就下了几个可以和外国人线上对话的 App(Cambly、Preply,需付费)打算练练英语口语,于是开启了一段非常有意思的与老外聊天的经历 ...

常用算法 — 滑动窗口 [ Doc ]

Jun 13, 2022
算法

滑动窗口也是一种双指针算法,但是滑动窗口特别强调窗口向一个方向滑动,看起来简单,但是却属于最难的一种双指针技巧,力扣上的题一般都是中等或困难难度。首要问题是识别什么样的问题需要滑动窗口解决,最常见的题 ...

常用算法 — 动态规划 [ Doc ]

Jun 10, 2022
算法

介绍 # 动态规划(Dynamic Programming,简称DP)常常适用于有重叠子问题和最优子结构性质的问题,并且记录所有子问题的结果,因此动态规划方法所耗时间往往远少于朴素解法。 使用动态规划解决的问 ...

常用算法 — 双指针 [ Doc ]

Jun 6, 2022
算法

双指针有时也叫滑动窗口,如果一定要和滑动窗口区别,那就是滑动窗口的窗口一般是向一个方向滑动,而双指针一般强调左右两个指针。除此之外,可能还会单独强调快慢指针,快慢指针也是一种双指针,但是两个指针的运动 ...

常用算法 — 二分查找 [ Doc ]

Jun 4, 2022
算法

二分查找利用已经排好序的数组,每次查找可以将查找范围减半,查找范围内只剩一个数据时查找结束。 代码模板 # 简单题的模板几乎都是统一的,根据题目的条件再灵活调整就可以了,比如 704. 二分查找。 var search = function(nums, target) { let low = 0, ...

数据结构 — 队列(Queue) [ Doc ]

May 21, 2022
算法, 数据结构

普通队列 # 队列的特点就是先进先出,后进后出。可以使用数组、链表实现队列。 队列的操作 # 插入元素(add)一般指在队列首部插入元素。 删除元素(remove)指删除队列末尾的元素。 获取元素(get)一般是获 ...

数据结构 — 哈希表(Hash Table) [ Doc ]

May 20, 2022
算法, 数据结构

基础概念 # 哈希表是一种常见的数据结构,也叫散列表。哈希表最大的优点是高效,在哈希表中插入、删除或查找一个元素都只需要 O(1) 的时间。 因此,哈希表经常被用来优化时间效率。除了专门考散列表的题,也经常作为辅助计 ...

数据结构 — 数组(Array) [ Doc ]

May 19, 2022
算法, 数据结构

一维数组 # 数组常被用来当做栈、堆和队列的容器,除此之外,大多是单纯只涉及数组的题目。 特点: 支持下标 支持切片 有固定长度或可变长度 应用场景 # 数组结构很简单,但是出的题涉及的算法类型比较多,比如排序、二分法 ...


©殷东亮 2012 - 2023