数据结构与算法
记录数据结构和算法的笔记
进击ing小白
这个作者很懒,什么都没留下…
展开
-
STL源码剖析阅读笔记--线性容器(1)
好久好久么写了,看的书不少却很难落实记录下来,难得浮生半日闲,实验室项目暂告一段,最近阿里和中行面试终于基本完了,终于可以再捧起侯捷大神的STL,Mark一下,督促自己多书多记录,希望2019自己能在项目,毕设和找工作之间游刃有余。目录语法两则:语法: 1、临时对象的产生—一种无名对象,不在程序预期之下(passer by value会产生临时对象,负担)2、静态...原创 2019-05-12 20:57:44 · 1659 阅读 · 2 评论 -
STL——set multi_set map multi_map unordered_set unordered_map heap priority_queue(3)
最近做编程题发现关联容器忘得多,翻翻以前写的代码,mark一下,勉励自己目录基本概念map multi_mapunordered_set unordered_map具体成员函数API调用代码priority_queuepush_heap pop_heap sort_heap参考:基本概念map multi_mapmap是标准的关联式容器,一个...原创 2019-03-10 00:48:44 · 358 阅读 · 0 评论 -
分治+全排列+归并+快排
目录分治思想: 全排列问题:组合问题:归并排序:快速排序:测试程序:测试结果:分治思想:将一个大问题分解成多个小问题,小问题可解,则可以用这几个问题的解构成大问题的解;分治问题代码模板:DataType Divide_and_Merage(P) { if(P<n0) Adhoc(P);//问...原创 2018-11-09 00:46:03 · 227 阅读 · 0 评论 -
STL——dequeue queue priority_queue list(2)
双端队列deque:底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问,deque是一个双端队列(double-ended queue),也是在堆中保存内容的.它的保存形式如下:[堆1] -->[堆2] -->[堆3] --> ...每个堆保存好几个元素,然后堆和堆之间有指针指向,看起来像是list和vector的结合品.适配器queue priority_queue:端单queue:底层一般用list或deque实现,原创 2018-11-11 00:00:47 · 419 阅读 · 0 评论 -
STL源码剖析阅读笔记--关联容器(2)
关联式容器:关联式容器主要有基于红黑树实现的set map multiset multimap 等和基于hashtable实现的hash_set hash_map hash_multiset hash_multimap。其中RB-tree容器是非公开的,hash_XX非标准的,而在c++11里面用unordered_set unordered_map unordered_multimap un...原创 2019-05-20 20:26:25 · 431 阅读 · 0 评论 -
利用allocator 和c++11的initializer_list封装vector容器
内存相关的 allocate 和 deallocate;构造相关的 construct 和 destroy。(两者分离)进行内存分配管理;实现vector,测试基本功能和STL常见算法一同测试原创 2019-05-31 22:11:16 · 629 阅读 · 0 评论 -
STL——array、内置数组、vector和string(1)
目录array的基本方法vector等线性容器的基本方法比较:string的基本用法:参考:array的基本方法与c++语言内置的数组一样, array类模版支持几乎所有内置数组包含的特性,array为c++11新特性顺序的(sequence) 内存连续的(contiguous storage) 固定大小的(fixed-size) array::begin ar...原创 2018-11-10 23:33:10 · 689 阅读 · 0 评论 -
顺序表和基于顺序表的栈和队列的实现(c思想实现)
顺序表的实现+基于顺序表的栈+基于顺序表的队列线性数据结构原创 2018-07-02 21:59:28 · 759 阅读 · 0 评论 -
单项链表+双向链表+循环链表的+队列+栈的(c思想面向过程)实现
单项链表的实现+双向链表实现+循环链表实现+基于链表的栈的实现+基于链表的队列的实现原创 2018-07-02 22:32:54 · 447 阅读 · 0 评论 -
关于滑动窗口解决子串问题
目录滑窗思想:滑窗编程范式:力扣76:最小覆盖子串力扣438:找字符串中所有异位词力扣3:无重复最长子串:滑窗思想:在解决字符串子串问题时,可以采用滑窗的思想;1,在字符串S中使用双指针中左右指针技巧,初始化left = right = 0,把索引[left,right]成为一个窗口2,不断增加right指针扩大窗口[left,right],直到窗口中字符...原创 2019-06-04 12:10:15 · 485 阅读 · 0 评论 -
字典树-Trie
目录Trie树基本概念力扣208:实现前缀树实现代码测试结果:Trie树基本概念Trie 树,也叫“字典树”。顾名思义,它是一个树形结构。它是一种专门处理字符串匹配的数据结构,用来解决在一组字符串集合中快速查找某个字符串的问题。它的key都为字符串,能做到高效查询和插入,时间复杂度为O(k),k为字符串长度,缺点是如果大量字符串没有共同前缀时很耗内存。它的核心思想就是通过最...原创 2019-06-20 23:43:30 · 231 阅读 · 0 评论 -
Leetcode-1 二叉树的深度
问题:给定二叉树,找到它的最小深度。最小深度是沿从根节点到最近的叶节点的最短路径上的节点数。分析:本题要注意最小深度与最大深度的区别:对于最大深度,不需要考虑当前子树是否为单子树(即一侧子树深度为0)的情况,即最大深度一直等于左右子树的最大值;对于最小深度,需要考虑当前子树是否为单子树的情况,对于双子树,其最小深度为左右子树的最小值,对于单子树,其最小深度为左右深度的最大值(因为有一侧的子树为...原创 2018-11-08 16:55:52 · 242 阅读 · 0 评论 -
冒泡排序及3个优化
冒泡排序+右边标记横向优化+交换标记纵向优化+鸡尾酒排序原创 2018-07-30 12:43:30 · 524 阅读 · 2 评论 -
快速排序 (挖坑法)+partion函数的应用
快速排序+挖坑法+第K大数应用+堆排序解决第k大数问题...原创 2018-09-07 23:17:14 · 2101 阅读 · 0 评论 -
顺序表C++模板类封装
顺序表+泛型+类的封装+实现cpp原创 2018-07-14 17:24:07 · 437 阅读 · 0 评论 -
二叉搜索树的c++类模板封装实现
二叉搜索树+泛型+类封装实现+缺点原创 2018-08-03 19:01:04 · 492 阅读 · 0 评论 -
堆的抽象类封装实现
堆的抽象类封装实现:面向对象+泛型编程+大顶堆+类的封装原创 2018-08-08 22:22:47 · 378 阅读 · 0 评论 -
DFS(递归+栈) BFS 以及路径记录
DFS:深度优先遍历,深度优先遍历。 两种实现方式:递归和栈。 递归:从顶点v出发深度遍历图G的算法 1访问v 2 依次从顶点v未被访问的邻接点出发深度遍历。 栈: 1访问v 2将v的邻居节点入栈 3 将栈的顶部元素出栈访问,同...原创 2019-03-19 18:39:10 · 3567 阅读 · 0 评论 -
动态规划 01背包 完全背包 多重背包
目录概念1、动态规划(DP)2、动态规划求解具有以下的性质:3、求解思路01背包问题求解思路二维数组和一维数组实现01背包问题:完全背包问题完全背包问题代码优化:多重背包问题:测试程序:测试结果:参考:原创 2018-11-09 01:05:01 · 293 阅读 · 0 评论 -
最长递增子序列问题
目录最长递增子序列问题合唱队问题应用:最长公共子串LCS::最长递增子序列问题问题:给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为6的数组A{5, 6, 7, 1, 2, 8},则其最长的单调递增子序列为{5,6,7,8},长度为4.dp法:设长度为N的数组为{a0,a1, a2, ...an-1)...原创 2019-08-11 00:10:59 · 751 阅读 · 2 评论 -
链表C++模板类封装实现
链表的封装+泛型编程+抽象数据类型测试原创 2018-07-19 08:59:43 · 779 阅读 · 0 评论
分享