![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
Bob丶抱抱
爱工作,爱生活
展开
-
算法系列--哈希表
哈希表哈希表(Hash Table,也叫散列表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做哈希函数,存放记录的数组称做哈希表。经典例题遍历数组中每个元素,统计比它小的元素的个数leetcode 1365示例:nums[1,2,3,2,1,4], 每个元素小的数组[0,2,4,5], 所以返回[0,2,4,2,0,5]解题思路第一种思路,是排序后, 然后原创 2020-12-03 17:12:46 · 274 阅读 · 0 评论 -
算法系列--二分查找
二分查找是一种效率较高的查找方法,前提是数据结构必须先排好序,它的平均时间复杂度是O(logn)。碰到排好序的数组,第一时间应该想到用二分法求解。二分查找的递归与非递归实现在有序数组arr中,查找目标值value的元素下标// 递归function biSearch(arr, start, end, value) { if (start > end) return -1 let mid = Math.floor((start + end) / 2) if (arr[mid].原创 2020-11-12 16:48:17 · 189 阅读 · 0 评论 -
算法系列--排序
根据时间复杂度分类,常见的排序算法有:O(n^2): 冒泡、插入、选择;O(nlogn): 快排、归并;O(n): 桶、计数、基数;冒泡排序时间复杂度: 平均O(n^2)稳定性: 稳定// 普通版function bubbleSort(arr) { let n = arr.length for (let i = 0; i < n; i++) { for (let j = 0; j < n - i - 1; j++) { if (arr[j] &原创 2020-11-06 11:52:40 · 221 阅读 · 0 评论 -
算法系列--递归
什么类型的问题适合递归求解一个问题可以分解为几个子问题;子问题与父问题求解方法一样;存在递归终止条件;如何编码递归问题写出递推公式;写出终止条件;翻译成代码;递归代码弊端及解决方法堆栈溢出:通过控制递归深度;重复计算:通过散列表存储计算值;函数调用耗时多:通过控制递归深度;空间复杂度高:转成非递归;经典习题LeetCode 70 爬楼梯:一次可以爬1层或者2层,问爬到n层有多少种方法;分析递推公式:爬到最后一层楼梯只有两种可能,从倒数第二层走一步,或者从倒数第原创 2020-10-23 18:47:58 · 128 阅读 · 0 评论 -
算法系列--基础知识
基础定义数据结构与算法区别数据结构:一组数据的存储结构;算法:操作数据的一组方法;时间复杂度表示算法的执行时间与数据规模之间的增长关系;只关注循环执行次数最多的代码,这段代码执行次数 n 的量级;乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积;常见时间复杂度多项式量级:O(1), O(logn), O(n), O(nlogn), O(n^k)非多项式量级:O(2^n)、O(n!)空间复杂度表示算法的存储空间与数据规模之间的增长关系;常见空间复杂度O(1)原创 2020-10-26 17:44:48 · 104 阅读 · 0 评论