自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

找到生活的 节奏&&驱动力

数学是上帝描写自然的语言

  • 博客(199)
  • 资源 (6)
  • 收藏
  • 关注

原创 LeetCode---Permutation Sequence

题目大意:给出两个数n和k,求出有字符序列1...n组成的序列的第K个排列。1=算法思想:此题用常规的做法容易超时如字典序法或递归方法。因此根据全排列的性质,3个元素组成的序列有6中排列,4个元素组成的序列有24中排列。。。。当要得到第K个元素时先找到他的开头元素,p=(k-1)/(n-1)!,则由其组成该排列的首元素,后面的操作一次类推。思想细化为:1.计算pTable[n]用于

2016-08-31 17:09:19 322

原创 暴力匹配和KMP算法模板

问题描述:给出一个文本串S和一个模式串P,判断P是否在S中出现,若出现返回模式串中的位置。暴力匹配算法思想假设当前文本串遍历到i,模式串遍历到j:则1.若s[i]==p[j]则文本串和模式串继续匹配               ++i;               ++j;2.若s[i]!=p[j]则文本串和模式串进行回溯后再匹配            

2016-08-12 19:58:24 784

原创 百度网页搜索部面试题(去除字符串中的冗余空格)

// "baidu search engine" => "baidu search engine"void EarseWhiteBlock(char *str){ if(str==NULL) return; bool isWhiteBlock_last=false;//标记上一个字符是否是空格 int num=0;//记录连续空格的个数 cha

2016-08-04 15:31:10 514

转载 3次握手 4次挥手

原地址:http://blog.csdn.net/whuslei/article/details/6667471建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文

2016-04-20 10:08:05 280

原创 最大字段和+最大子矩阵算法模板

#include#includeusing namespace std;int a[101][101],b[101];int dp(int a[],int n)//求最大子段和函数{ int sum = 0,max = 0; for (int i=0; i<n; i++) { sum += a[

2016-02-20 21:07:33 509

原创 AC自动机算法模板

note//目前还不完善#include #include #include using namespace std;const int kind=26;//节点中包含的子节点数//字典树中的节点struct node{ node *fail; //失败指针 node *next[kind];//Trie每个节点的26个子节点(最多26个字母)

2016-01-28 15:32:39 329

原创 快速选择算法

算法思想:给出一个数组,选出数组中第K大的元素。1.采用快速排序的划分策略将数组划分成两个子数组。2.如果数组1的个数大于K则第K个元素在数组1中。3如果数组1的个数小于K则第K个元素在数据2中。3.如果等于k 则找到第K大的元素。代码如下:#include #include using namespace std;int partition(int dat

2016-01-15 11:40:39 513

原创 冒泡排序

#include #include using namespace std;/*冒泡排序1.从num[0]...num[n-2]分别与它后面的元素比较2.将当前最小的元素放在对应的位置上。 3.共比较n-1趟,每趟比较 n-i个元素4.故时间复杂度为O(n^2) */ void Sort(int num[],int n){ for(int i=0;i<n-1;++i)

2016-01-14 15:29:26 334

原创 LeetCode---Pow(x, n)

题目大意:给出一个浮点数x和一个整数n,求出x^n.算法思想:1.如果n2.分治法:x^n=x^n/2*x^n/2*x^n%2代码如下:class Solution {public: double myPow(double x, int n) { if(n<0) return 1.0/power(x,-n); return power

2016-01-13 11:22:55 358

原创 插入排序

算法思想:插入排序由n-1趟排序组成,对于p=1趟到p=n-1趟,插入排序保证从位置0到位置p上的元素为已排序状态且位置0~p-1的位置上是已排过序的。代码如下:void InsertionSort( int data[],int n){ int j,p; for(p=1;p<n;++p){ tmp=data[p]; for(j

2016-01-12 17:38:28 308

原创 快速排序

#include using namespace std;/*算法思想1.将数组首位元素作为划分基准t 2. 从后往前寻找大于等于 t的元素 交换之3. 从前往后寻找小于 t的元素 交换之4.填写基准元素5.返回划分位置。 */int partition(int *data,int l,int r){ int t=data[l]; while(

2016-01-12 15:13:07 286

原创 Replace '*'of string

题目大意:给出一个字符串,该字符串包含若干个'*',每个'*'都可以用0或1替换,输出所有的替换方案。算法思想:采用递归,采用索引表示当前遍历字符的位置,如果其等于字符串的长度则输出。如果当前遍历到的字符为'*'则分别用0或1替换然后递归的输出所有可行方案,否则不进行替换递归寻找可行方案。代码如下:#include #include using namespace std;

2015-12-30 22:23:55 351

原创 LeetCode---Palindrome Partitioning II

题目大意:给出一个字符串,对其进行切割使得使得每一部分都是一个回文,求出所有的切法中最小的切割数。算法思想:本题主要基于动态规划思想。1.设f[i]表示从字符i到n-1之间最小的切割数。2.则状态转移方程为f[i]=min{f[j+1]+1} i=3.设p[i][j]表示si~sj是否是回文。p[i][j]=s[i]==s[j]&&p[i+1][j-1].代码如下:cl

2015-12-28 19:09:04 291

原创 LeetCode---Sudoku Solver

题目大意:编写一个程序解决数独问题,要求填满表中的空白位置,使得其所在的行和列以及所在的宫没有相同元素。算法思想:1.遍历该表格,寻找空白位置。2.对于每个空白位置,枚举放置1~9这9个数字,并判断是否有效且递归深搜。3.还原空白位置。4。如果此时没有可行方案返回false5.遍历完表格返回真。代码如下:class Solution {public: bool

2015-12-25 11:38:10 346

原创 LeetCode---Contains Duplicate II

题目大意:给出一个数组,一个数K,判断该数组中是否存两个索引使得nums[i]==nums[j]且|i-j|算法思想:1.设置一个map容器,键值为数组中的元素值,实值为元素值对应的索引编号。2.遍历数组,将每个元素值插入map中,如果插入成功则说明没出现相等元素,如果插入失败则说明出现相同元素。此时判断索引之差是否小于等于K,若果满足条件返回true,否则更新索引值。3.遍历完数

2015-12-24 15:46:18 275

原创 LeetCode---Permutations II

题目大意:给出一个包含重复元素的数组,找出该数组所有可能的唯一排列。算法思想:字典序法。1.对数组排序,将初始序列放入结果中。2.找出p=max{i|a[i]3.找出q=max{j|a[j]>a[p]}4.swap(a[p],a[q])5.将a[p+1]之后的元素倒序。6将生成的结果保存起来。7.重复2~6.代码如下:class Solution {pub

2015-12-15 10:37:30 265

原创 LeetCode---Word Search

题目大意:给出一个二维字符数组和一个字符串,判断该字符串是否可由数组中水平或竖直方向的临近字符组成。算法思想:1.遍历字符数组的每一个位置,将此位置作为字符串搜索的起点,然后经行深度优先搜索。2.深度优先搜索的过程中,若当前已搜索满足条件的字符数是否和字符串的长度相等返回真值,否则看搜索位置是否合法,是否位访问,是否该字符等于字符串中对应的字符;然后递归的进行该位置的上下左右四个方

2015-12-10 20:46:57 321

原创 LeetCode---Longest Substring Without Repeating Characters

题目大意:给出一个字符串,要求输出该字符串中没有重复字符的最长子串的长度。算法思想:用一个无序map存储当前最长无重复字符的子串的每个字符,键:字符,值:对应字符的索引,然后遍历字符串,如果当前字符不在容器中,则将其插入,若在容器中则将已在容器中的该字符及其之前的放入容器的字符移除,之后将当前字符插入容器中。遍历过程中不断迭代寻找最大长度。注意:用一个pre记录移除容器中已存在字符及其之前

2015-12-10 11:19:57 265

原创 LeetCode---Restore IP Addresses

题目大意:给出一个仅包含数字的字符串,找出该字符串所有可能形成的IP地址。算法思想:采用深度优先搜索。1.当遍历到字符串的末尾且组成了IP的四个部分时形成一个有效IP。2.深搜过程中去除不能形成有效IP的情况。字符串的长度-遍历起点剩余步骤数的总长度。3.从每个起点开始计算其后3位形成的数值,如果小于255则是有效的将当前字符放入临时IP且进行下一步骤的搜索。如果值为0则终止计

2015-12-09 14:27:11 331

原创 LeetCode---Generate Parentheses

题目大意:给出一个非负整数n,表示有n对括号,输出其所有合法的括号排列。算法思想:一步一步的构造括号序列。依据两个原则:1.当做扩号数小于N时可以添加左括号;2.当右括号数大于N时可以添加有括号。最后当左括号数等于N时表明产生一个合法排列,将括号补充完整。采用深度优先搜索找出所有可行方案。代码如下:class Solution {public: vector genera

2015-12-08 11:24:19 316

原创 LeetCode---N-Queens II

题目大意:给出N个皇后,放在N*N的棋盘上使其彼此间不能相互攻击。找出所有不同的方案数。算法思想:1.整体思想如LeetCode---N-Queens2.只需记录方案数即可,每找到一种方案计数加1.代码如下:class Solution {public: int totalNQueens(int n) { this->columns=vector(n,

2015-12-07 20:39:34 274

原创 LeetCode---N-Queens

题目大意:将N个皇后摆放在N*N的棋盘上,要求N个皇后彼此间不能相互攻击。算法思想:采用一个数组C[n]记录每一行皇后所在位置的列下标,一个数组column[n]记录当前局面以后皇后所在的列,然后用两个数组main_dialog[2*n]和anti_dialog[2*n]标记皇后所在位置的主副对角线(通过规律可知,同一主对角线上的坐标其横纵坐标差值恒等,同一副对角线上的坐标横纵坐标和值恒等

2015-12-07 20:05:58 277

原创 LeetCode---Palindrome Partitioning

题目大意:给出一个字符串,对该字符串进行各种切割,使得切割后的每个子串是回文,找出所有的情况。算法思想:整体上采用深度优先搜索的思想。遍历字符串的每一个元素,判断从该元素处断开是否是一个合法方案(即构成回文)若是则递归搜索剩下一部分字符串的可行方案。代码如下:class Solution {public: vector > partition(string s) {

2015-12-04 17:42:32 269

原创 LeetCode---Count Primes

题目大意:给出一个非负数n,统计出小于n的素数的个数。算法思想:1.设置一个规模为n的素数表,可以稍微大些,初始化为0。2.遍历素数表将那些非素数及其倍数从素数表中去除。3.统计素数表中素数。代码如下:class Solution {public: int countPrimes(int n) { int* notPrime=new int[n+5];

2015-12-02 15:40:18 234

原创 LeetCode---Ugly Number II

题目大意:给出一个数n,求出第n个丑数。所谓丑数是指只能被2,3,5整除的数。1是第一个丑数。算法思想:1.利用一个数组存储现有的丑数使其有序排列。2.然后将数组中的每一个数分别乘以2,3,5得到一批新的丑数,将其已经存在数组中的丑数排除。找出最小的那个数即是数组中的下一个数。3.为了简化步骤2,可知数组存在一个数使得在它前面的数乘以2小于等于当前最大的丑数,使得它后面的数乘以2都

2015-12-02 13:14:06 279

原创 LeetCode---Group Anagrams

题目大意:给出一组字符串,将每个字符串按照相同的回文词进行分组。所谓回文词就是组成单词的字母的种类和数目没有变,只是顺序改变而已。要求返回结果中每组回文词按字典序排列。算法思想:1.遍历字符串数组,对于每个字符串将其字典序排序,排序后的结果作为map容器的键以此将其分组。2.遍历map容器,判断每个键对应的值个数是否大于0,将值进行排序后放入结果集中。代码如下:class So

2015-12-01 19:01:39 274

原创 LeetCode---Compare Version Numbers

题目大意:给出两个非空的仅有数字和‘.’字符构成的字符串,他们表示两个版本号,比较它们的大小。这里‘.’不是小数点,作用仅仅是分隔字符串。算法思想:由于'.'的作用仅仅是分隔字符串,从而将两个版本号分隔成了若干小段,我们只需计算两个版本号每小段表示的数值大小,并进行比较即可。代码如下:class Solution {public: int compareVersion(s

2015-11-28 16:37:00 295

原创 LeetCode---Multiply Strings

题目大意:给出两个字符串表示的数求出其乘法结果。算法思想:1.设置两个变量分别存储当前结果和累加结果。2.利用两个循环,外层循环控制被乘数内层循环控制乘数,然后将被乘数的每一位分别和乘数的所有位相乘得到当前结果并将其扩大10倍和累加结果相加并存入累加结果中。3.返回计算结果。代码如下:class Solution {public: string multiply(

2015-11-28 14:24:51 237

原创 LeetCode---Count and Say

题目大意:给出一个数字n,按照下面的规律生成第n个字符串序列1, 11, 21, 1211, 111221, ...1 is read off as "one 1" or 11.11 is read off as "two 1s" or 21.21 is read off as "one 2, then one 1" or 1211.算法思想:1.如何n=1时直接返

2015-11-26 21:25:10 194

原创 LeetCode---ZigZag Conversion

题目大意:给出一个字符串和行号,其实按ZigZag模式排列的输出其转化后的排列方式。ZigZag的排列规律:算法思想:设置一个string[rowNums]数组,和一个方向标记,通过方向标记将字符串写入string[rownums]中,然后将其拼接起来即是转换结果。方向分为向下和向上,向下时按行号递增的方式填写数组触碰到边界改变方向,向上时按对角线规律填写数组,遇到上边界改变方

2015-11-25 11:22:50 272

原创 LeetCode---Longest Common Prefix

题目大意:给出一组字符串,求出改组字符串中的最长公共前缀。算法思想:1.判断字符串的个数如果个数为0返回空,为1返回仅存在的字符串。2.遍历容器找出容器中字符串最小的长度。3.按最小规模遍历容器中首个字符串将其每个字符与其他字符串的相应字符比较如果都相同则加入结果字符串中,如果存在不同则终止遍历。4,返回最长公共前缀字符串。代码如下:class Solution {p

2015-11-24 17:36:22 233

原创 LeetCode---Reverse Words in a String

题目大意:给出一个由若干单词和空格组成吃的字符串,要求将其包含的所有单词的顺序倒转并且去掉冗余空格。算法思想:字符串中的字符可以看做是有空格和非空格组成的。当遍历字符串时如果遇见空格时此时判断是否是上个单词的结束,如果是将其迭代加入结果中,如果不是则继续遍历字符串,当遇见非空格符时将其拼接入单词并做标记。最后如果标记为真将最后一个单词加入结果中,然后去掉末尾的空格符。代码如下:cl

2015-11-23 20:26:00 312

原创 LeetCode---Longest Palindromic Substring

题目大意:给出一个字符串,求出该字符串中的最长回文串。算法思想:采用动态规划的解法。利用f(i,j)判断si~sj是否是一个回文串。状态转移方程 :f(i,j)=   true  i==jf(i,j)=   true  s[i]=s[j]   i+1=j;f(i,j)=  s[i]==s[j]&&f[i-1][j-1];代码如下:class Solution {p

2015-11-19 21:10:57 229

原创 LeetCode---String to Integer (atoi)

题目大意:给出一个数字表示的字符串将其转化为数字。要求算法能够忽略字符串开头的连续空格,当字符串出现其他字符时将字符串就此截断且返回结果,当数字和大于MAX_INT时返回MAX_INT当数字和小于MIN_INT时返回MIN_INT.算法思想:开始时设置一个当前结果和变量,符号变量,和一个开始标记,然后遍历字符串,忽略开头的连续空格符,如果首次遇到'+','-'则标记符号变量且标记开始变量,

2015-11-18 23:12:40 270

原创 LeetCode---Implement strStr()

题目大意:实现strstr()函数,即给出两个串判断一个串是否是另一个串的子串,如果是返回第一次出现的索引,如果不是返回-1;算法思想:法一:用str.find().法二:暴力匹配:遍历主串的每一位,将其当做子串的起始位判断其开始且后序的字符和字串是否相等,如果全部相等则返回主串当前的位置,如果不全相等则进行下一个起始位的比较。主串遍历完时返回-1;代码如下:class S

2015-11-18 20:35:39 275

原创 LeetCode---Combinations

题目大意:给出两个整数n和k,找出从1~n中包含k个数的所有组合。算法思想:1.计算出1~n个元素构成集合的所有子集合的个数subset_nums。2.将每个子集合用0~subset_nums进行编号,将该编号表示成二进制形式。3.找出出每个编号中二进制位数为1的个数等于k的编号。4.然后遍历这些编号的二进制将对应位为1元素放入集合中。5.将每个找出的子集合放入结果集中。

2015-11-17 11:39:35 257

原创 LeetCode---Next Permutation

题目大意:给出一个排列,求出它的下一个排列,如果不存在则返回升序的排列。算法思想:直接使用next_permutation()算法。代码如下:class Solution {public: void nextPermutation(vector& nums) { if(nums.size()==0) return ; next_permut

2015-11-16 20:07:05 237

原创 LeetCode---Permutations

题目大意:给出一个数组,求出数组中元素的所有排列。算法思想:1.首先将数组升序排序,并将结果放入集合中。2.然后利用STL中的next_permutation()算法求出数组中元素的所有排列。代码如下:class Solution {public: vector> permute(vector& nums) { vector >res;

2015-11-16 19:30:49 269

原创 LeetCode---Subsets II

题目大意:给出一个数组,数组中可能包含重复元素,列出其所有的子集合,要求子集合中的元素给递减排列且子集合不能够重复。算法思想:1.算法整体思想如LeetCode---Subsets2.之后利用set的特性取出重复的子集合即可。代码如下:class Solution {public: vector> subsetsWithDup(vector& nums) {

2015-11-16 18:11:40 308

原创 LeetCode---Subsets

题目大意:给出一个数组,列出所给数组的所有子集合,要求子集合中的元素非降序排列。算法思想:1.根据数组的规模计算出子集合的个数sub_count。2.由于要使子集合中的元素非降序排列则将原始数组排序。3.将每个子集合编号赋值范围为0~sub_count-1,将编号值转化为其二进制表示,对应原数组中的每个元素如果二进制位为1则将其放入子集合中(如000对应的子集合为[])。将每个编号

2015-11-16 16:39:16 338

快车下载记录解析获取

本程序通过解析快车软件的下载记录文件获取,快车软件的下载历史 得到历史下载的文件名 文件存储路径 文件创建时间等信息。

2015-10-27

2014年信息学奥林匹克中国国家队论文集

很不错的ACM论文集,细读的话会有很多新思路,新思想!哈哈

2014-09-22

Hadoop的工作原理

很好的介绍Hadoop的资料,值得一看!

2014-09-19

挑战编程完整中文版

ACM入门书籍,非常经典,很值得一看,不错哟!

2014-09-19

经典算法大全

各种经典的算法 有代码可直接用,对于想快速学习算法的人来说很有成效。

2014-09-08

云计算与分布式系统_从并行处理到物联网

云计算与分布式系统_从并行处理到物联网,是一本很厉害的书,对于学习云计算很有帮助。

2013-05-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除