![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
打不过我吧
这个作者很懒,什么都没留下…
展开
-
【leetcode】460. LFU缓存
题目描述:460分析:1 要统计每一个key出现的次数:一个哈希表m来记录当前数据{key, value}和其出现次数之间的映射2 把相同频率的key都放到一个list中,那么需要另一个哈希表freq来建立频率和一个里面所有key都是当前频率的list之间的映射。3 由于题目中要我们在O(1)的时间内完成操作,为了快速的定位freq中key的位置,我们再用一个哈希表iter来建立key和freq中key的位置之间的映射。4 还需要两个变量cap和minFreq,分别来保存cache的原创 2020-08-14 16:17:21 · 134 阅读 · 0 评论 -
【leetcode】146. LRU缓存机制
题目描述:146参考分析:LRU(Least Recently Used,最近最少使用)淘汰内存策略,最近使用的根据时间局部性永远放在队首、最不常使用放在队尾,当内存满了的时候淘汰掉不常使用的。本题要求设计:1 容量capacity;2 put(key, val) 方法存入键值对; 时间复杂度为 O(1)3 get(key) 方法获取 key 对应的 val,如果 key 不存在则返回 -1。时间复杂度为 O(1)看到O(1)必然想起hashmap的查找,为了删除和插..原创 2020-08-13 14:23:27 · 107 阅读 · 0 评论 -
leetcode347 前 K 个高频元素
题目描述:leetcode347前 K 个高频元素思路:将元素加入hashmap建立<数字,频率>的映射,然后借助priority_queue<频率,数字>实现最大堆,取最大堆的k个元素,时间复杂度O(k logN)class Solution {public: vector<int> topKFrequent(vector<int>& nums, int k) { unordered_map<int, int原创 2020-06-24 00:32:16 · 140 阅读 · 0 评论 -
【编程题】逛街
链接:https://www.nowcoder.com/questionTerminal/35fac8d69f314e958a150c141894ef6a来源:牛客网小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。小Q从第一栋一直走到了最后一栋,小Q从来都没有见到这么多的楼,所以他想知道他在每栋楼的位置处能看到多少栋楼呢?(当前面的楼的高度大...原创 2020-04-25 01:29:58 · 513 阅读 · 0 评论 -
【编程题】字符串压缩算法和常用的substr与replace函数
题目描述:小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且1<=m<=100),例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?#include <...原创 2020-04-24 23:29:52 · 429 阅读 · 0 评论 -
【memcpy 】手写代码 C++
用法:#include <string.h>功能:由src所指内存区域复制count个字节到dest所指内存区域。说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。#include<iostream>#include<cstdio>#include<cstring>using namespace s...原创 2020-04-11 17:55:12 · 623 阅读 · 0 评论 -
memset()函数的一点总结
测试代码:总结:memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的;包含在<string.h>头文件中,可以用它对一片内存空间逐字节进行初始化;void *memset(void *s, int v,size_tn); 这里s可以是数组名,也可以是指向某一内在空间的指针;v为要填充的值;n为要填充的字节数;【memset是逐...原创 2020-04-11 17:05:29 · 246 阅读 · 0 评论 -
计数排序,基数排序,桶排序
参考:https://blog.csdn.net/sinat_34820292/article/details/82861535?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-Bl...原创 2020-04-11 16:48:42 · 159 阅读 · 0 评论 -
判断一棵树是否为搜索二叉树
二叉树中序遍历的情况下,遍历结果是所有节点依次升序的,就是搜索二叉树,否则就不是。由此我们可以对之前非递归版本的中序遍历稍加修改,在打印节点的时机判断当前节点是否大于上一个节点,就可以判断此二叉树是否是搜索二叉树。思路:1中序递归遍历二叉树,将结果保存进一个stack2比较大小,栈顶为大,栈顶为小。测试代码#include<iostream>#inclu...原创 2020-04-11 00:12:48 · 448 阅读 · 0 评论 -
【数据结构】【快速排序算法】【C++】
快排原理——分治1、从数列中取出一个数作为基准数(枢轴,pivot)。2、将数组进行划分(partition),将比基准数大的元素都移至枢轴右边,将小于等于基准数的元素都移至枢轴左边。3、再对左右的子区间重复第二步的划分操作,直至每个子区间只有一个元素。快排最重要的一步就是划分了。划分的过程用通俗的语言讲就是“挖坑”和“填坑”。快速排序时间复杂度快速排序的时间复杂度在最坏...原创 2020-04-07 11:16:39 · 272 阅读 · 0 评论 -
【数据结构】KMP算法
目录KMP时间复杂度match函数match的实现match的时间复杂度具体代码实现:KMP要求模式串一头一尾能匹配上解释: j=6时候,match = 3,意思是p0-p3是能够和p(6-3)-p6匹配。注意:当有一个串能配得上,并不能到此为止,要继续检查还有没有更长的串。KMP时间复杂度match函数优秀的做法...原创 2020-04-03 23:15:08 · 164 阅读 · 0 评论