算法刷题
单兵狗粮
这个作者很懒,什么都没留下…
展开
-
LRU缓存淘汰算法
1.LRU算法介绍缓存满了需要删除一些缓存,LRU(Least Recently Used)就是一种常用的策略,表示缓存数据的重要程度与最后一次使用时间有关,缓存满了,就先删除很久没有用过的缓存数据。2.算法要求leetcode例题https://leetcode-cn.com/problems/lru-cache/初始化构造函数需要接受一个capacity参数作为缓存最大容量。put(key,val)方法存入键值对。get(key,val)方法获取key对应的val,不存在则返回-1。原创 2021-12-06 18:13:09 · 459 阅读 · 0 评论 -
十分钟学算法-堆排序
//6.堆排序(HeapSort)/*利用堆设计的排序算法。堆是一个近似完全二叉树的结构,且满足子节点键值总是小于/大于它的父节点6.1算法描述1.构造初始堆(一般升序大顶堆,降序小顶堆)2.将堆顶元素与末尾元素进行交换,使末尾元素最大。size--3.重复步骤1,2。反复执行建堆+交换步骤,直到整个序列有序。6.2最好||平均||最坏时间复杂度O(nlogn)//以2为底不稳定排序算法6.3大根...原创 2021-12-04 00:41:22 · 526 阅读 · 0 评论 -
十分钟学算法-选择排序
//5.选择排序(SelectionSort)/*最简单直观的排序算法,为知识完整性而复习。原理:在未排序序列中找到最大/小元素,存放到该排序序列起始位置。然后,再从剩余未排序元素中继续寻找最大/小元素,放到已排序序列末尾。以此类推,直到所有元素均排序完毕5.1算法描述1.找min/max下标,两层循环2.外层循环i从0开始,表示已排序元素3.内层循环在[i+1,n]区间找最值,swap(nums[min],nums...原创 2021-12-04 00:37:53 · 110 阅读 · 0 评论 -
十分钟学算法-快速排序
//2.快速排序(QuickSort)/*本质:冒泡排序基础上的递归分治法。2.1算法描述1.数列挑出一元素(“基准”pivot)2.分区操作(partition):所有比基准小的放在基准前面;比基准大的放后面3.递归地(recursive)把小于基准元素和大于基准元素的子数列排序2.2最好||平均时间复杂度O(nlogn)//以2为底不稳定排序算法*//*分组操作对一组区间为[m,n]数据进行分组操作...原创 2021-12-01 14:45:16 · 807 阅读 · 0 评论 -
十分钟学算法-冒泡排序
//1.冒泡排序(BubbleSort)/*1.1算法描述1.相邻元素a,b;ifa>b;swap(a,b);2.for(开始;结尾;每一对)//一层循环3.除最后一个,对所有一对元素重复以上步骤//二层循环4.重复步骤1~3,直到排序完成。1.2时间复杂度O(n²)稳定排序算法*///基础版/*理解:实际上每次外层循环会把最大的移到最后.(即最大数像冒泡一样上浮)二层循环去除排好的一位,再...原创 2021-12-01 13:27:20 · 80 阅读 · 0 评论