- 博客(54)
- 资源 (2)
- 收藏
- 关注
原创 微博估计要火一阵的SleepSort之Shell及C实现
今日在微博看到如此神奇的代码,居然还有新的sort算法,对于我这种渣渣必须研究一下,代码如下:#!/bin.bashfunction f(){ sleep "$1" //sleep 这么多ms echo "$1"}while [ -n "$1" ] //第一个参数不为空do f "$1" & //后台运行,相当于fork一个进程去执行f, 父进程同
2014-06-29 15:24:01 1533 2
原创 图算法时空复杂度分析及重定向
关于图的DFS的时间复杂度分析:DFS是递归函数,一共调用n次,n为定点数,每次访问其对应的临界点,设为ei若是临界表,因为循环遍历list。总的基本操作次数 n+sum(e1+...en)=n+e, 故O(n+e)若是matrix,因为遍历一行,找非-1,且未visit,所以(n+1)*n=n^2+n,投O(n^2)拓扑排序里面,经过静态链栈优化后,邻接表为O(n+e),
2014-06-28 14:35:44 1415
原创 并查集
int Find(int i){ if(i>=setssize) return error i; while(tree[i]!=-1) i=tree[i]; return i;}int CollapsFind(int i){ if(i>=setssize) return error i; int queryi=i;//modified in finding parent
2014-06-27 18:18:06 778
原创 TopoSort 实现之不用高端静态链栈算法
今天理解了终于写了TopoSort,感觉当年DS学的静态链栈实在坑爹,而且麻烦,好像和我的本质没有太大的区别哦。时间复杂度O(n+e)其实和O(n^2)是邻接矩阵和临界表的区别。我的理解就是其实好像循环N次,{每次先找任意一个入度为0的点,然后从图中删除}。思路非常简单,但是coding实现还是有很多变化,我已开始不用indegree,直接matrix写了一个O(n^3)的,就是不断在ma
2014-06-27 14:09:14 926
原创 多重loop之 continue break设计
今天看到msdn一个找满足所有criterion的item,找到则返回一个,总结了多重循环程舍continue的设计 ,挺有意思for(item){ for(criterion) { if(!item.ismetby(criterion)) { next item loop//as one criterion not met, while continue can
2014-06-25 11:12:05 969
原创 DP 算法总结
01背包也是之前联系过的,最长公共子序列(和最短编辑举例一类),还有石子合并问题(本质是矩阵链乘法一类的)今天写了一下最长公共子序列,发现了问题,我习惯了用string于是用这个容器来装字符序列,然后就出现了问题。代码ac,递推方程必须全队,包括条件,下标。因为子串长度问题,必须m+1 n+1空间,in位长度1和j的lcs可能借助长度0和长度j的lcs,因此定义c(0,j)
2014-06-24 15:41:25 1297
原创 回溯法 或dfs 或深度优先 题总结
回溯法总结一道数字到字符串的题,将数字映射到手机的字符串上,是编程之美版本的简略版,简明的DFS,其实我更愿意用backtrack framework来做,说成是回溯法,本质没有区别vector numtoletter;void f(vector& strvec, int selectn, int n,string digits, vector numtoletter, vector&
2014-06-23 22:18:50 980
原创 stream getline相关的总结
ifstream 和 istringstream都继承自 istream, 所以string类的getline(istream&, )函数
2014-06-21 02:20:31 1045
原创 回顾基本01背包问题
今天练了一下当年的背包问题,发现居然OJ还没过,赶紧刷一下。想到当年,每次做背包,就和军爷一起回忆Eason的你的背包,从此变得好浪漫~~~~~题目太经典了,分析就略过了。写个递推方程:c[i,j]=max{c[i,j-1], c[i-1,j-w[i]+v[i]]} if BagWeight>=j>=w[i] =c[i,j-1] if jc[1,j]={0
2014-06-19 20:20:09 848
原创 n个整数数组返回n-1个乘积最大值
一道某公司的笔试题,int*a[]1..n 帧数数组, 求n-1个数的乘积的最大值。只能用乘法,不用除法。用除法就太简单了,全部连乘,然后逐个除,注意判断有0的,遍历就最大。第一眼反应分类讨论,按照逻辑来分:1) 有0的话, 若>=2个0, return 0;=1个0, 剩余奇数个负数,return 0,偶数个,余下乘积2) 无0的话,n为奇,若奇个负数,去掉最大负数,偶个
2014-06-19 14:51:04 1237
原创 deque 与vector区别
什么是新的? 细读上面两张表格,你会发现和vector比较这里增加了两个函数。 1、c.push_front(elem) —— 在头部插入一个数据。 2、c.pop_front() —— 删除头部数据。 调用方法和c.push_back(elem)和c.pop_back()相同,这些将来会告诉我们对于deque> 会非常有用,deque可以在前后加入数据。>
2014-06-18 22:55:53 1162
原创 vector 中[begin, end)
vector vec(&a[i][0],&a[i][6]); vector这种iterator构造函数 zui
2014-06-17 20:42:30 771
原创 InsertIntervals
这道也是4*题,思路基本和/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {}
2014-06-17 15:08:52 947 1
原创 MergeLinklist
写了一个合并有序链表,代码有点纠结啊,涉及到指针就是麻烦,DS课曹老师课件说linklist是DS的难点。。。如果数组就很简单了,链表就要小心。里面遇到的一些情况,第一,最好是先确定l1归到l2还是相反,我是把l1归到L2,返回l2, 而且要先把l2的位置定好,只要比较第一次就可以确定了。否则后面写逻辑那叫一个纠结啊。。。然后后面比较两个大小,类似于数组归并,prev1,prev1表示
2014-06-16 14:51:00 1423
原创 简易括号匹配看程序设计
bool isValid(string s) { if(s.length()==0) return true; stack S; int i=0; S.push(s[i]); i++; while(!S.empty()||i<s.length()) { if(i=
2014-06-16 11:35:52 820
原创 July大神交大读书会子atoi
犹记得July大大在今年交大一次读书会上让大家10min写这个算法,然后讲解这个算法,我是通过百度网盘的视频看的,我10min没写出来,而且还是在输出exception case的几次提示下才AC掉的,而且关于需求分析还差了cplusplus的说明= =今天写了这个函数,一开始想估计有千万种情况考虑,但是细细一想,其实也是可以枚举出来的,关键就是逻辑要能处理所有的case,我已开始
2014-06-15 22:47:11 1597 1
原创 整数逆置
一道整数转换的题目,这里需要掌握int的范围,int是32bit带符号,因此是-2^31~2^31-110进制整数是10位,因此用10digit足以,此外还要处理逆置后首位为0,其实对于一般情况可以拿过来处理了,算法比较简单,我把负数都转为整数处理,最后再转回去,这样除的时候不会那么纠结,而且这样方便附上代码:int reverse(int
2014-06-14 23:35:08 1209
原创 股票买卖之问题转化为最大字段和
今天做了一道购买股票的问题,每天有股价,可以买多次,卖多次,但是买之前必须清空手上的股票,问最大收益多少转化为对a[]求i, j,使得max(a[j]-a[i]) st: 1初看是个很简单的最值优化问题,但是也不是很好想,本来说先算a[] max min都算出来,看maxi>mini 就解决了,否则再另外处理,但是另外处理麻烦,后来我转化为一个函数曲线,发现其实是找后面比前面大
2014-06-14 16:27:35 762
原创 C/C++ 字符串reverse总结
总结一下 字符串reverse的几种操作,包括C C++风格的:一种思想是就地利用一个tmp首尾swap,char* 和String都一样char*void Reverse(char *word) // 适合C风格字符串反转函数{ // 来源 C++ Primer Plus 第五章 forstr2.cpp -- revers
2014-06-14 15:16:35 10044
原创 微软面试之拷贝带有random域的linklist
今天终于过了CopyLinkListWithRandomPoint了,犹记得当年和超晖大神住一起的时候,大神还出了这道他当年MS面试的链表题目,我当时愣是没写出时间复杂度O(n)空间复杂度O(1)的算法,这道题目确实很巧,先把Copy的链表和原来和在一起,利用原来的random的相对位置来Copy新的random,我当时也想到了利用相对位置这一点,但是算法还是没成型。后来还把代
2014-06-14 14:51:04 798
asp.net网站-网聚社会员管理系统
2012-02-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人