
数据结构与算法
文章平均质量分 60
XP-Code
这个作者很懒,什么都没留下…
展开
-
红黑树的插入过程
红黑树的插入过程原创 2022-12-10 15:10:23 · 842 阅读 · 1 评论 -
加权随机算法
加权随机算法原创 2022-08-28 20:35:12 · 1869 阅读 · 0 评论 -
Sunday 算法
KMP算法和BM算法,这两个算法在最坏情况下均具有线性的查找时间。但实际上,KMP算法并不比最简单的c库函数strstr()快多少,而BM算法虽然通常比KMP算法快,但BM算法也还不是现有字符串查找算法中最快的算法,有一种比BM算法更快的查找算法即Sunday算法。Sunday算法由Daniel M.Sunday在1990年提出,它的思想跟BM算法很相似:只不过Sunday算法是从前往后...原创 2019-04-27 08:24:52 · 626 阅读 · 0 评论 -
Print all sub-array with 0 sum
题目:Given an array of integers, print all subarrays having 0 sum.For example,Input: { 4, 2, -3, -1, 0, 4 }Sub-arrays with 0 sum are{ -3, -1, 0, 4 }{ 0 }Input: { 3, 4, -7, 3, 1, 3, 1, -4, -2...原创 2019-04-27 08:25:15 · 301 阅读 · 0 评论 -
动态规划-数对之差最大值
题目描述在数组中,某个数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如,在数组{2,4,1,16,7,5,11,9}中,数对之差的最大值是11,是16减去5的结果。分析定义D[i]是以数组中第i个数字为减数的所有数对之差的最大值。根据题意,用N[i]表示数组的第i个元素,就是说对于任意h<i,D[i]>=N[h]-N[i]。所以D[i]的最大值就是整个数...原创 2019-04-27 08:25:24 · 1308 阅读 · 0 评论 -
平衡二叉树的旋转及其代码实现
平衡二叉树的构造问题以及为了维护它的平衡所要进行的LL旋转、RR旋转、LR旋转、RL旋转。一、平衡二叉树的构造node *insert(node *root, int x) { if (root == 0) { root = &all[total++]; root->left = root->right = 0; r...原创 2019-04-27 08:25:33 · 2325 阅读 · 1 评论 -
Binary Tree Zigzag Level Order Traversal
The more we do,the more we can do.1. 题目:二叉树锯齿形层次遍历Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level...原创 2019-04-27 08:25:50 · 258 阅读 · 0 评论 -
Binary Tree Inorder
You cannot find peace by avoiding life.1. 题目:二叉树中序遍历Given a binary tree, return the inorder traversal of its nodes' values.Example:Input: [1,null,2,3] 1 \ 2 / 3Output: [1...原创 2019-04-27 08:26:04 · 316 阅读 · 0 评论 -
icpc 2018 World Finals Problem : A-Catch the Plane
一、题目Your plane to the ICPC Finals departs in a short time, and the only way to get to the airport is by bus.Unfortunately, some of the bus drivers are considering going on strike, so you do not know...原创 2019-04-26 16:54:30 · 664 阅读 · 0 评论 -
动态规划-最大子数组和问题
题目描述 有整型数组int a[]={1,-2,3,10,-4,7,2,-5},求这个数组的最大子数组和分析来手写一下求取最大子数组和序列的过程,用M[i]表示第i个数所对应的最大子数组和S[0] = 1 ;M[0] = 1 ;S[1] = max{S[0]+a[1],a[1]} = -1 ;M[1] = max{S[1],M[0]} = 1 ; S[2] = max{S[1]+a[2],原创 2016-08-09 21:47:30 · 379 阅读 · 0 评论 -
动态规划-最长非降子序列
题目描述 有序列5,3,4,8,6,7,求它的最长非降子序列的长度分析来手写一下求取最长非降子序列的过程,用d[i]表示第i个数所对应的最长非降子序列的长度d[0] = 0;d[1] = 1;//5是第一个数,所以只有5这一个数,d[1]=1d[2] = 1;//因为3之前的所有数都大于3,所以只有3这一个数d[3] = max{1,d[2]+1};原创 2016-08-09 21:46:07 · 684 阅读 · 0 评论 -
动态规划-最大子数组和问题
题目描述 有整型数组int a[]={1,-2,3,10,-4,7,2,-5},求这个数组的最大子数组和分析来手写一下求取最大子数组和序列的过程,用M[i]表示第i个数所对应的最大子数组和S[0] = 1 ;M[0] = 1 ;S[1] = max{S[0]+a[1],a[1]} = -1 ;M[1] = max{S[1],M[0]} = 1 ; S[2] = max{S[1]+a[2],原创 2016-08-09 21:44:54 · 704 阅读 · 0 评论 -
动态规划-最少硬币问题
题目描述 如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元?原创 2016-08-20 08:59:50 · 1173 阅读 · 0 评论 -
插入排序和希尔排序
插入排序和希尔排序1.插入排序 插入排序的主要思想就是从未排序的序列中一次依次拿出一位插入到已经排好序的序列中去。插入排序的时间复杂度是O(n^2)。用 [9,6,4,7,8] 这个数组来模拟一下插入排序的过程:第一步 : 将位置0的元素9视为已排好序的序列,选择位置1的元素6作为待插入的元素。向前遍历,发现6比9小,则将6和9的位置交换,此时序列变为[6,9,4,7,8]。第二步 : 接原创 2016-08-06 17:51:52 · 291 阅读 · 0 评论