数据结构和算法
风中追风_zzz
这个作者很懒,什么都没留下…
展开
-
每日算法三道之判定一个给定序列能否为二叉搜索树的后序遍历结果
核心思想:分冶、递归 思路:由于是一颗二叉搜索树,中序遍历为从小到大的结果,相当于已给定,其实转换为是否能根据中序和后序唯一确定一个二叉树。 根据后序遍历找到根,再找到中序遍历中此根节点的位置,从而可以将后序遍历分为左右两部分,判断左半边部分是否都小于根节点同时右节点都大于根节点,若是,则将左右两部分依次递归此过程,否则不是一个二叉搜索树的后序遍历结果。 代码:/**********...原创 2018-03-07 20:40:24 · 190 阅读 · 0 评论 -
每日算法三道之N对括号能得到括号匹配的序列有哪些
核心思想:递归 思路: 代码: 这里的代码是别人写的,没怎么看懂其如何组成字符串的,如果有看懂了的还麻烦告诉我,感谢感谢了。若只是求个数就很简单了,利用动态规划思想借助一个数组就好了,代码如下:“`include include include include using namespace std;/**用非递归算法只算能够形成的括号匹配...原创 2018-03-07 20:47:56 · 407 阅读 · 0 评论 -
天平找假币问题
问题:给定12枚硬币,其中有一枚假币,其重量可能比真币重也可能轻,现只提供一个天平,问至少需要几次天平称重才能找到假币。 解决方案: 1)将12枚硬币平均分为3堆记为A,B,C,每堆有4枚硬币。将A,B两堆分别放在天平的两端,若天平平衡。说明假币在C堆中。 a)设C堆中的硬币为1,2,3,4。将1,2和3,4分别放在天平的两端,此时天平肯定不平衡,若1,2硬币所在的端比3,4所在的端...原创 2018-03-14 20:09:38 · 9832 阅读 · 2 评论 -
KMP算法
http://www.cnblogs.com/SYCstudio/p/7194315.html 这个讲的详细,直接收藏吧,之后完全弄懂了之后,再来写自己的总结。 关于怎么求解next数组的可以参考下面这篇博文: http://blog.csdn.net/qq_30974369/article/details/74276186...转载 2018-03-14 21:44:21 · 167 阅读 · 0 评论 -
每日算法题三道之给定一个字符串求k个不同字符的最长子串
题目: 给定字符串str,计算最多包括k个不同字符的最长子串,如给定字符串”eceba”和k=3,则包括3个不同字符的最长子串为”eceb” 思路: 用两个变量i,j分别标志字符串子串的起始位置和终止位置str[i,j],两次for循环,外层起始位置,内层终止位置来暴力找子串str[i,j],当找到的子串str[i,j]中不同字符的个数小于k时继续遍历,等于时若大于原先找到的子串则更新,大于...原创 2018-03-08 16:11:49 · 1066 阅读 · 0 评论 -
每日算法题三道之字符串循环移动以及词语的翻转
题目: 2、给定一个字符串S[0…..N-1],要求把S的前k个字符移动到S的尾部,如把字符串”abcdef”前面的2个字符’a’,‘b’移动到字符串的尾部,得到新字符串”cdefab”:即字符串循环左移k。要求时间复杂度为O(N),空间复杂度为O(1)。 1)思路一:逐个字符左移,将bcdef依次左移1个,再将a移到末尾;b是同样的操作,这样最坏时间复杂度为O(N2)。 2)思路二:先将a...原创 2018-03-08 17:49:17 · 275 阅读 · 0 评论 -
字符串转换为整数
一道看似很简单的题,其实需要考虑很多情况。 1)需检测输入字符串的有效性 2)需跳过字符串前面的空格字符 3)需检测数字的正负性 4)需判断数字是否溢出代码如下: int My_atoi(char *str) { assert(str != NULL); int overFlag = 0;if (str == ""){ return 0;}char *i原创 2018-04-08 22:06:25 · 391 阅读 · 0 评论