- 博客(16)
- 收藏
- 关注
原创 <仅是自己做笔记。。。系列15>实现一个挺高级的字符匹配算法: 给一串很长字符串,要求找到符合要求的字符串,例如目的串:123 1******3***2 ,12*****3这些都要找出来
实现一个挺高级的字符匹配算法:给一串很长字符串,要求找到符合要求的字符串,例如目的串:123,1******3***2 ,12*****3这些都要找出来其实就是类似一些和谐系统。。。。。#include using namespace std;bool findTaget(string srcStr, string disStr){ if(srcStr.size() >
2015-11-12 16:34:02
745
原创 <仅是自己做笔记。。。系列x>所有系列题目都来自v_JULY_v前辈的:精选微软等公司经典的算法面试100题
所有系列题目都来自v_JULY_v前辈的:精选微软等公司经典的算法面试100题,以下链接为原题目:http://blog.youkuaiyun.com/v_july_v?viewmode=contents
2015-11-12 16:32:12
635
原创 <仅是自己做笔记。。。系列-14>输入两个整数序列。其中一个序列表示栈的push顺序, 判断另一个序列有没有可能是对应的pop顺序。
题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。 比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,po
2015-11-09 21:29:59
510
原创 <仅是自己做笔记。。。系列-13>输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数, 使其和等于 m ,要求将其中所有的可能组合列出来.
编程求解:输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.思路:这道题想了时间挺久的,感觉如果遇到了应该在规定的时候调不出来。。。整体思路是这样:先从最少的取一个数来找,然后找完所有的情况,找不到就取两个数,以此类推。。。然后用递归,把取多个数的情况变成取一个数。vInt是用来保存过程中找到的解。#
2015-11-09 09:48:14
435
原创 <仅是自己做笔记。。。系列-12>输入一个表示整数的字符串,把该字符串转换成整数并输出。
题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。感觉主要考的是考虑未知情况。。。吧。。。#include using namespace std;long str2Int(char*str){ int i = 0,flag = 1; long result = 0; if(str[0] == '-')
2015-11-08 16:14:47
446
原创 <仅是自己做笔记。。。系列-11>输入n,用最快的方法求Fibonacci数列的第n项。
#include using namespace std;class CFibonacci{public: CFibonacci() { vi[1] = 0.0; vi[2] = 1.0; } double getNth(int n) { if(n < 0) return -1;
2015-11-07 22:32:16
376
原创 <仅是自己做笔记。。。系列-10>n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。比如0,1,2,3,4,5,0。从0开始,p->0第一次后1,2,3,4,5,1,p->1,下次删除从p开始第2个(p是第一个)第二次后1,
2015-11-07 19:44:38
474
原创 <仅是自己做笔记。。。系列-9>在一个字符串中找到第一个只出现一次的字符。
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。此题目比较简单,因为字符常用的就那么几个,无论怎么样都不会超过256个,所以通过建立一个临时数组来保存是否是第一次出现。#include using namespace std;void showFirst(char* s){ int a[256] = {0}; int n = 0
2015-11-07 14:40:09
312
原创 <仅是自己做笔记。。。系列-8>输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。 8 / \ 6 10/ \ / \5 7 9 11输出8 6 10 5 7 9 11。#include using namespace std;class CTwoTree{public:
2015-11-06 21:19:27
325
原创 <仅是自己做笔记。。。系列-7>输入一颗二元查找树,将该树转换为它的镜像
题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。例如输入: 8 / \ 6 10 / \ / \5 7 9 11输出: 8 / \ 10 6 / \
2015-11-06 21:14:28
274
原创 <仅是自己做笔记。。。系列-1>二叉树的非递归遍历
二叉树的递归遍历我经常用,但很少用非递归的,特此mark一下。下面是中序遍历的代码,具体思想就是:把每个节点push到vector中,如果此节点的左子树没有儿子了,那么就pop掉,然后返回到上一节点。每次都要判断上一节点pLast和此时节点儿子p的关系,如果pLast==p的左儿子,那么这一次push就不能再把p的左儿子push进去,如果pLast==p的右儿子,那么继续pop。#in
2015-11-05 22:35:27
232
原创 <仅是自己做笔记。。。系列-2>求二叉树中节点的最大距离
如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序,求一棵二叉树中相距最远的两个节点之间的距离。一般我们想到的是,把根节点的左侧最深找出来,再把右侧最深找出来就好了,但是我们会忽视一个问题,比如说,当右侧只有一个节点,左侧内部的深度很深,此时就不能这样了。感觉应该要把每一个节点,都作为根节点来遍历一次,才能得到正确答案。
2015-11-05 18:41:10
312
原创 <仅是自己做笔记。。。系列-3>翻转句子中单词的顺序。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。感觉这道题很简单,应该有很多方法,简单的方法可以是:可以用先进后出的堆栈的特性来解决,下面的代码只是为了说明这种方法,没有考虑空格不止一个等情况。
2015-11-05 09:15:42
256
原创 <仅是自己做笔记。。。系列-5>给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数,要求下排每个数都是先前上排那十个数在下排出现的次数。
给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数,要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下:【0,1,2,3,4,5,6,7,8,9】举一个例子,数值: 0,1,2,3,4,5,6,7,8,9 分配: 6,2,1,0,0,0,1,0,0,0 在下排出现了6次,1在下排出现了2次,2在下排出现了1次,3在下排出现了0次....以此类推.. #inc
2015-11-03 22:20:10
479
原创 <仅是自己做笔记。。。系列-6>判断俩个链表是否相交 给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。
判断俩个链表是否相交,给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。总结了很多前辈的思想,在此做个小结1. 先判断带不带环.2. 如果都不带环,就判断尾节点是否相等3. 如果都带环,选取一链表环上任意节点,在不在另一条链表上,如果在,则相交,如果不在,则不相交。4. 如果一个带环一个不带环,则必定不相交。那么1、如何判断是否存在环?
2015-11-03 21:59:35
925
原创 <仅是自己做笔记。。。系列-4>输入一个整数和一棵二元树,从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径,打印出和与输入整数相等的所有路径
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如 输入整数22和如下二元树 10 / \ 5 12 / \ 4 7则打印出两条路径:10, 12和10, 5, 7。二元树节点的数据结构定义为:
2015-11-01 20:34:33
967
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人