随笔分类 -  算法与数据结构

基本的算法代码
c++实现split
摘要:#include #include #include #include using namespace std; vector split(const string &s, const string &seperator) { vector result; typedef string::size_type string_size; string_size i = 0; ... 阅读全文

posted @ 2018-04-03 16:22 wsw_seu 阅读(148) 评论(0) 推荐(0)

位图bitmap应用
摘要:所有比特的编号方法是,从低字节的低位比特位开始,第一个bit为0,最后一个bit为 n-1。 比如说,现在有个数组是这样子的,int a[4],那么a[0]的比特位为0——31a[1]的比特位为32——63a[2]的比特位为64——95a[3]的比特位为96——127 现在,我们根据下面这个程序来研 阅读全文

posted @ 2018-03-18 15:53 wsw_seu 阅读(770) 评论(0) 推荐(0)

bitmap对海量无重复的整数排序--转
摘要:原文地址:http://blog.csdn.net/u013074465/article/details/46956295 原文地址:http://blog.csdn.net/u013074465/article/details/46956295 现在有n个无重复的正整数(n 小于10的7次方),如 阅读全文

posted @ 2018-03-18 15:53 wsw_seu 阅读(299) 评论(0) 推荐(0)

在一个递增数组的rotate变换中找target
摘要:Search in Rotated Sorted Array Search in Rotated Sorted Array Search in Rotated Sorted Array Search in Rotated Sorted Array Suppose an array sorted in 阅读全文

posted @ 2018-03-12 20:58 wsw_seu 阅读(200) 评论(0) 推荐(0)

栈(Stack)和队列(Queue)是两种操作受限的线性表。
摘要:(线性表:线性表是一种线性结构,它是一个含有n≥0个结点的有限序列,同一个线性表中的数据元素数据类型相同并且满足“一对一”的逻辑关系。 “一对一”的逻辑关系指的是对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有一个终端结点没有后继但有一个前驱结点,其它的结点都有且仅有一个前驱和 阅读全文

posted @ 2018-03-06 21:20 wsw_seu 阅读(4487) 评论(0) 推荐(0)

求数组中两个元素最大差值
摘要:一个整数数组a[n],在a[n]中找两个数字,使得下标大的数字减去下表小的数字所得的差值最大,即:在a[n]中找 a[i] 和 a[j] ,使得 a[i] - a[j] 的值最大,并且 i > j 。 寻求O(n)的解法 如果要求i<j的话: 阅读全文

posted @ 2018-02-01 16:30 wsw_seu 阅读(575) 评论(0) 推荐(0)

排序之计数排序
摘要:1 #include 2 using namespace std; 3 const int MAXN=100000; 4 const int k=1000; 5 int a[MAXN],c[MAXN],ranked[MAXN];//统计数组中每个值为i的元素出现的次数,存入数组C的第i项 6 int main() 7 { 8 int n; 9 cin>>n... 阅读全文

posted @ 2018-02-01 16:24 wsw_seu 阅读(143) 评论(0) 推荐(0)

排序之基数排序
摘要:基数排序: 基数排序的思想就是将待排数据中的每组关键字依次进行桶分配基数排序:LSD和MSD方法。LSD的基数排序适用于位数小的数列,如果位数多,使用MSD效率会更高。MSD与LSD相反,由高位数为基底开始分配。LSD为例:73, 22, 93, 43, 55, 14, 28, 65, 39, 81 阅读全文

posted @ 2018-02-01 16:23 wsw_seu 阅读(187) 评论(0) 推荐(0)

最长回文子串的Manacher算法
摘要:对于一个比较长的字符串,O(n^2)的时间复杂度是难以接受的。Can we do better? 先来看看解法2存在的缺陷。 1) 由于回文串长度的奇偶性造成了不同性质的对称轴位置,解法2要对两种情况分别处理;2) 很多子串被重复多次访问,造成较差的时间效率。 缺陷2)可以通过这个直观的小🌰体现: 阅读全文

posted @ 2018-01-19 11:05 wsw_seu 阅读(159) 评论(0) 推荐(0)

IP地址转换
摘要:1 /* 2 点分十进制转32位IP 3 */ 4 #include 5 #include 6 #include 7 using namespace std; 8 bool change2Binary(const string& str) 9 { 10 int arrInt[4] = {0};//存放4个IP地址整数 192.168.1.1 11 unsigne... 阅读全文

posted @ 2018-01-18 16:18 wsw_seu 阅读(376) 评论(0) 推荐(0)

最短路径—Dijkstra算法和Floyd算法
摘要:1、单源点的最短路径问题:给定带权有向图G和源点v,求从v到G中其余各顶点的最短路径。 我们用一个例子来具体说明迪杰斯特拉算法的流程。 定义源点为 0,dist[i]为源点 0 到顶点 i 的最短路径。其过程描述如下: 步骤dist[1]dist[2]dist[3]dist[4]已找到的集合 第 1 阅读全文

posted @ 2018-01-03 19:24 wsw_seu 阅读(23757) 评论(0) 推荐(1)

手写atoi、strcpy、strcat
摘要:一:实现atoi函数 二、实现strcpy函数:char *strcpy(char *dst, const char *src); 如果不考虑内存重叠: 上面的实现没有考虑内存重叠,调用 char str[10]="abc"; my_strcpy(str+1,str); 会出错。然而调用系统的str 阅读全文

posted @ 2017-12-18 19:53 wsw_seu 阅读(434) 评论(0) 推荐(0)

海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)(转)
摘要:先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆时间复杂度是O(mlogm),算法的时间复杂度为O(nmlogm)(n为10亿,m为10000 阅读全文

posted @ 2017-12-15 14:12 wsw_seu 阅读(297) 评论(0) 推荐(0)

丑数
摘要:题目描述 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 分析: 思路:按顺序把每个丑数放在数组中,求下一个丑数 下一个丑数必定由有数组中的某一个丑数A * 2, B 阅读全文

posted @ 2017-12-05 20:39 wsw_seu 阅读(167) 评论(0) 推荐(0)

把数组排成最小的数
摘要:题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,3 阅读全文

posted @ 2017-12-05 10:34 wsw_seu 阅读(102) 评论(0) 推荐(0)

Maximum Subarray(最大连续子串)
摘要:1 class Solution { 2 public: 3 //动态规划,维护两个变量 local[i+1]=max(array[i],local[i]+array[i+1]) 4 int FindGreatestSumOfSubArray(vector array) { 5 int len=array.size(); 6 if(l... 阅读全文

posted @ 2017-12-01 15:24 wsw_seu 阅读(102) 评论(0) 推荐(0)

最小的k个数
摘要:题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 法一:排序 1 class Solution { 2 public: 3 vector<int> GetLeastNumbers_Solution(vector<in 阅读全文

posted @ 2017-11-27 15:26 wsw_seu 阅读(130) 评论(0) 推荐(0)

数组中出现次数超过一半的数字
摘要:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 阅读全文

posted @ 2017-11-23 16:35 wsw_seu 阅读(198) 评论(0) 推荐(0)

Best Time to Buy and Sell Stock I II III IV
摘要:一、Best Time to Buy and Sell Stock I Say you have an array for which the ith element is the price of a given stock on day i. If you were only permitted 阅读全文

posted @ 2017-11-23 15:47 wsw_seu 阅读(367) 评论(0) 推荐(0)

二叉搜索树与双向链表
摘要:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 阅读全文

posted @ 2017-11-17 15:17 wsw_seu 阅读(157) 评论(0) 推荐(0)

导航