上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 19 下一页
摘要: 【思路】将每个数字都存入map中作为key值,将它们出现的次数作为value值,当value超过一半时则返回其key值。 阅读全文
posted @ 2017-03-03 16:54 Strawberry丶 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 【思路】从第一位开始,判断每一位字符的所有可能性,依此递归。 阅读全文
posted @ 2017-03-03 16:29 Strawberry丶 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 【思路】因为二叉搜索树的中序遍历就是递增排列的,所以只要在中序遍历时将每个结点放入vector中,再分别为每个结点的左右指针赋值即可。 阅读全文
posted @ 2017-03-03 15:24 Strawberry丶 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 1 /* 2 struct RandomListNode { 3 int label; 4 struct RandomListNode *next, *random; 5 RandomListNode(int x) : 6 label(x), next(NULL), random(NULL) { 7 } 8 }; 9 *... 阅读全文
posted @ 2017-03-03 15:01 Strawberry丶 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 【思路】 ·递归先序遍历树, 把结点加入路径。 ·若该结点是叶子结点则比较当前路径和是否等于期待和。 ·弹出结点,每一轮递归返回到父结点时,当前路径也应该回退一个结点 注:路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 阅读全文
posted @ 2017-03-02 15:10 Strawberry丶 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 归并排序 【思想】 ·简单地将原始序列划分为两个子序列 ·分别对每个子序列递归排序 ·最后将排好序的子序列合并为一个有序序列,即归并过程 【特点】稳定 空间代价:O(n) 时间代价:O(nlogn) 注: ·尽管归并排序最坏比较次数比快速排序少,但它需要更多地元素移动,因此它在实用中不一定比快速排序 阅读全文
posted @ 2017-03-01 23:35 Strawberry丶 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 各种内排序方法的选择: 1.从时间复杂度选择 对元素个数较多的排序,可以选择快速排序、堆排序、归并排序;元素较少时,可以选择简单的排序方法。 2.从空间复杂度选择 尽量选择空间复杂度为O(1)的排序方法,其次选空间复杂度为O(logn)的快速排序方法,最后才选择空间复杂度为O(n)的二路归并排序方法 阅读全文
posted @ 2017-03-01 21:02 Strawberry丶 阅读(732) 评论(0) 推荐(0) 编辑
摘要: 基数排序 【思想】基数排序属于“分配式排序”,分为高位优先法MSD和低位优先法LSD 低位优先法LSD: ·从最低位k0开始排序 ·对于排好的序列再用次低位k1排序 ·依次重复,直至对最高位kd-1排好序后,整个序列称为有序的 这是一个分、收;分、收;...;分、收的过程 【特点】稳定 空间复杂度: 阅读全文
posted @ 2017-03-01 21:01 Strawberry丶 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 1.直接选择排序 【思想】选出剩下的未排序数据中的最小元素与第i个元素交换 【特点】不稳定 空间代价:O(1) 时间代价:O(n^2) 2.堆排序 【思想】基于最大推来实现,效率更高。堆排序的基本思想是:首先将n个记录按关键码建成堆(初始堆),将堆顶元素与最后一个元素交换,然后将剩余的元素调整成堆. 阅读全文
posted @ 2017-03-01 20:54 Strawberry丶 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 1.冒泡排序 【思想】不停地比较相邻的记录,如果不满足排序要求就交换相邻数据,直到所有的记录都已经排好序 【特点】稳定 空间代价:O(1) 时间代价:O(n^2) -比较次数 -交换次数 ·最少:O(n) ·最少:0 ·最多:O(n^2) ·最多:O(n^2) 2.快速排序 【思想】基于分治法的排序 阅读全文
posted @ 2017-03-01 17:53 Strawberry丶 阅读(1971) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 19 下一页