
手撕算法学习
主要常备面试算法题总结学习!!
郭柒
这个作者很懒,什么都没留下…
展开
-
算法1:贪心思想
贪心原创 2020-08-21 19:11:52 · 341 阅读 · 0 评论 -
算法3:动态规划简单学习
动态规划原创 2020-08-03 16:25:39 · 322 阅读 · 0 评论 -
算法5:回溯算法
1.回溯算法原创 2020-07-29 18:50:54 · 1247 阅读 · 0 评论 -
面试8——手撕算法
链表有无环判断 实现一个单例模式 给一个字符串判断单词数 开方算法 青蛙跳台阶 常用排序(快排和归并要写吐) 反转链表 两个链表,寻找公共节点 查找字符串中不重复的最长子串 LRU 手写求树的深度的代码 手写生产者消费者 编程实现string类 两个数组A,B,A有的B都有,求B-A; 输入一个字符串,输出它的全排列 统计完全二叉树多少个节点 memcpy实现 ...原创 2020-06-16 20:24:19 · 4745 阅读 · 0 评论 -
LRU——缓存管理算法
1.页面缓存管理算法,即LRU算法是运用过去预测未来的一种算法,将过去访问量最高的页面资源保存到缓冲区的最前面,将最不常用的资源放在缓冲区最后面或者将之删除。 2.缓冲区的结构为了更好的在后期查找,遍历最好使用键值对,哈希表等结构,查找时间复杂度为O(1),所以本文采用 map + list的数据结构来当做数据缓冲区。 LRUCzche.h //LRU算法 map+循环链表实现 class LRUCache { public: LRUCache(int size); ~LRUCache(); voi原创 2020-06-18 09:54:29 · 4322 阅读 · 0 评论 -
C++生产者消费者设计模式+多线程基础扫盲
1.mutex互斥量、锁 mutex互斥量是一个类,这个类有有一个lock()方法,和一个unlock()方法。如果第一次运行了lock()这个方法,而没有运行unlock()这个方法,第二次再运行lock()这个方法时,程序就会卡停在这里,只有当运行了unlock()这个方法运行后,第二个lock()方法才会运行通过。就是运用这种“锁”的机制就可以保证两段代码独立运行。 lock()和unlock()必须同时成对出现,不可以多写,也不可以少写,要不认会出现不知名的错误。 std::lock_guard原创 2020-06-11 20:41:05 · 3886 阅读 · 0 评论 -
C++ 查找算法学习合集
1.顺序查找 全局遍历搜索匹配,暴力检索,不提倡。 2.二分查找 常见的二分查找就是二叉树的性质,每次都查找剩余的一半。所以它的事件复杂度也即是O(logN)。虽然二分查找算法的效率很高(这也是二分查找算法被广泛应用的原因),但是前提就是说查找的序列:有序。在需要频繁进行插入或者删除操作的数据记录中使用二分查找算法效率不是很高,因为还要维持数据的有序还需要额外的排序开销。 3.二分查找变种 1.插值查找算法 变种的地方主要在于mid值的计算方法。在有序序列当中,当我们所要查找的value偏小或者偏大,如果再原创 2020-05-20 20:39:30 · 2579 阅读 · 0 评论 -
排序算法学习笔记 C/C++
排序算法学习,记录之。 1.冒泡排序 最佳情况:T(n) = O(n) 最差情况:T(n) = O(n2) 平均情况:T(n) = O(n2) int Bubble_Sort(int *array,int len) { if (len == 0) return 0; int i, j; for (i = 0; i < len; i++) { for (j = i+1; j <...原创 2020-05-07 15:23:09 · 5833 阅读 · 0 评论