随笔分类 -  数据结构

摘要:大致思路就是从string中得到一个hash码,然后比较hash码。 从Python的string源码中的发现的;线性搜索;时间复杂度O(n)吧大概。 这是Python的部分源码 hash码多次打乱可以理解,但是具体为什么就不知道了。如果有dalao求告知|・ω・`) 下面是我的代码,仅做记录用。 阅读全文
posted @ 2018-04-02 23:55 backinfile 阅读(202) 评论(0) 推荐(0)
摘要:题目链接:下一个排列 不妨先看一下全排列的生成, 例如 nums = [1,2,3,4] 1.取出最小值1,再将[2,3,4]排列, 暂令nums = [2,3,4] 2.再取出最小值2, 令nums = [3,4] 3.再取出最小值3, 令 nums = [4] 4,将以上取出的值合并,为[1,2 阅读全文
posted @ 2017-02-26 21:13 backinfile 阅读(244) 评论(0) 推荐(0)
摘要:题目(lintcode): 1.二数之和 2.三数之和 3.最接近的三数之和 4.四数之和 取三数之和为例: (一) 普通算法,多重遍历数组,需要多重for嵌套,但严重超时。 (二) 剪枝,在外层循环中考虑有没有“不可能符合要求”的情况。 例如,在三数之和中,若两个数之和大于0,直接break。但题 阅读全文
posted @ 2016-09-19 18:52 backinfile 阅读(339) 评论(0) 推荐(0)
摘要:这个想法来自于数组链表,在数组链表中,数组的每一个元素对应一个指针,这个指针是下一个元素的index。用整数表示指针。 这是这个vector的源码: 1 #include <iostream> 2 using std::cout; 3 4 template <typename T> 5 class 阅读全文
posted @ 2016-09-04 16:18 backinfile 阅读(564) 评论(0) 推荐(0)
摘要:分治思想:递归,使前一半和后一半排好序,再合并。时间复杂度O(nlgn) 阅读全文
posted @ 2016-09-01 13:44 backinfile 阅读(190) 评论(0) 推荐(0)
摘要:用了双向链表,快排,<<,=,[]重载,还有erase的实现比较好玩 阅读全文
posted @ 2016-08-31 22:20 backinfile 阅读(928) 评论(0) 推荐(0)
摘要:快速排序使用了分治思想,分解为求 a(p..q-1)<a[q]<a(q+1) 的问题 + 分别递归a(p..q-1),a(q+1). 阅读全文
posted @ 2016-08-31 21:12 backinfile 阅读(221) 评论(0) 推荐(0)
摘要:最大堆(二叉)排序分几个步骤: 1.maxheap(),维护最大堆的性质,即节点的值大于子节点的值,时间复杂度O(lgn) 2.bulid_max_heap(),从无序数组中构造最大堆,时间复杂度O(n) 3.heap_sort(),对无序数组进行排序,时间复杂度O(nlgn) 代码有注释 阅读全文
posted @ 2016-08-31 14:16 backinfile 阅读(333) 评论(0) 推荐(0)
摘要:可直接编译运行,其中status()方法效果如图: 阅读全文
posted @ 2016-08-30 14:15 backinfile 阅读(1804) 评论(0) 推荐(0)
摘要:分治策略的思路: 1.将问题分解为一些子问题,其中有的子问题的形式与原问题相同,只是规模更小 2.递归,求解使递归停止的边界条件 3.合并 对于最大子数组问题, 阅读全文
posted @ 2016-08-30 13:28 backinfile 阅读(256) 评论(0) 推荐(0)
摘要:可直接编译运行,其中方法status为形象的显示出栈的结构: 1 // visual stack , need define "cout 4 using std::cout; 5 6 template 7 struct item 8 { 9 item():value(),last(NULL),next(NULL){} 10 item *las... 阅读全文
posted @ 2016-08-30 01:14 backinfile 阅读(343) 评论(0) 推荐(0)