
CC150笔记
_Greenday_
我的个人网站:http://wgliang.github.com
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
cc150:判断是否为旋转字符串
假设你有一个isSubstring函数,可以检测一个字符串是否是另一个字符串的子串。 给出字符串s1和s2,只使用一次isSubstring就能判断s2是否是s1的旋转字符串, 请写出代码。旋转字符串:"waterbottle"是"erbottlewat"的旋转字符串。解答题目说我们使用一次isSubstring函数就可以判断s2是否是s1的旋转字符串, 如果从原始字符串s1和s2转载 2014-11-10 00:45:53 · 1107 阅读 · 0 评论 -
CC150:将一个矩阵旋转90度
将一个矩阵旋转90度原创 2014-11-09 23:48:25 · 1858 阅读 · 0 评论 -
cc150:将一个栈按升序排序
一、使用一个附加的栈来模拟插入排序。将原栈中的数据依次出栈与附加栈中的栈顶元素比较, 如果附加栈为空,则直接将数据压栈。否则, 如果附加栈的栈顶元素大于从原栈中弹出的元素,则将附加栈的栈顶元素压入原栈。 一直这样查找直到附加栈为空或栈顶元素已经不大于该元素, 则将该元素压入附加栈。stack Ssort(stack s){ stack t; while(!s.empty()){ int转载 2014-12-05 01:13:31 · 1025 阅读 · 0 评论 -
cc150:使用两个栈实现一个队列(两种方法比较)
队列是先进先出的数据结构(FIFO),栈是先进后出的数据结构(FILO), 用两个栈来实现队列的最简单方式是:进入队列则往第一个栈压栈, 出队列则将第一个栈的数据依次压入第二个栈,然后出栈。每次有数据进入队列, 都先将第二个栈的数据压回第一个栈,然后再压入新增的那个数据; 每次有数据出队列,都将第一个栈的数据压入第二个栈,然后第二个栈出栈。 代码很简单:template class My转载 2014-11-30 01:41:24 · 911 阅读 · 0 评论 -
cc150:使用栈来实现汉诺塔
递归解法其实也是用到了栈的,在每次递归调用自己的时候, 将中间的状态参数压入栈中。不过这些操作都是系统隐式进行的, 所以你不用去关心它具体是怎么压栈出栈的。如果我们要用栈自己来实现这个过程, 就不得不考虑这其中的细节了。 接下来,我们就显式地用栈来实现递归过程中,这些状态参数的压栈出栈过程。首先, 我们需要定义一个数据结构来保存操作过程中的参数。struct op{转载 2014-11-30 01:32:34 · 1055 阅读 · 0 评论 -
CC150:翻转一个C风格的字符串
写代码翻转一个C风格的字符串。(C风格的意思是"abcd"需要用5个字符来表示,包含末尾的 结束字符) 需要注意的是是否处理最后一个h原创 2014-11-06 00:53:56 · 757 阅读 · 0 评论 -
cc150:判断一个字符串中的字符是否唯一
实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构)原创 2014-11-06 00:50:27 · 1092 阅读 · 0 评论 -
cc150:setofstacks,栈就像叠盘子,有一定高度
栈就像叠盘子,当盘子叠得太高时,就会倾斜倒下。因此,在真实的世界中,当一叠盘子 (栈)超过了一定的高度时,我们就会另起一堆,再从头叠起。实现数据结构SetOfStacks 来模拟这种情况。SetOfStacks由几个栈组成,当前一栈超出容量时,需要创建一个新的栈 来存放数据。SetOfStacks.push()和SetOfStacks.pop()的行为应当和只有一个栈时 表现的一样。进一步转载 2014-11-23 01:00:40 · 959 阅读 · 0 评论 -
cc150:使用一个数组实现3个栈
一、你如何只用一个数组实现三个栈? 二、转载 2014-11-18 01:11:18 · 1114 阅读 · 0 评论 -
cc150:实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值。
实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值。 push,pop和min函数的时间复杂度都为O(1)。 我们可以用一个变量来保存当前栈的最小值,让我们来看看这样可行否? 如果栈一直push那是没有问题,入栈元素如果比当前最小值还小,那就更新当前最小值。 可是如果pop掉的栈顶元素就是最小值,那么我们如何更新最小值呢?显然不太好办。 既然只用一个变量没法解转载 2014-11-18 01:32:39 · 1627 阅读 · 0 评论 -
cc150:实现一个算法从一个单链表中返回倒数第n个元素
实现一个算法从一个单链表中返回倒数第n个元素。解答这道题的考点在于我们怎么在一个单链表中找到倒数第n个元素? 由于是单链表,所以我们没办法从最后一个元素数起,然后数n个得到答案。 但这种最直观的思路显然是没错的,那我们有没有办法通过别的方式,从最后的元素数起数 n个来得到我们想要的答案呢。这个次序颠倒的思路可以让我们联想到一种数据结构:栈。我转载 2014-11-14 16:31:13 · 2197 阅读 · 0 评论 -
cc150:从一个未排序的链表中移除重复项
从一个未排序的链表中移除重复的项原创 2014-11-13 01:57:21 · 1796 阅读 · 1 评论 -
cc150:实现一个算法来删除单链表中间的一个结点,只给出指向那个结点的指针
实现一个算法来删除单链表中间的一个结点,只给出指向那个结点的指针。原创 2014-11-14 17:51:24 · 1562 阅读 · 0 评论 -
cc150:判断一棵树是否为平衡树
判断一棵树是否平衡,需要注意的是和判断一棵树是否为平衡二叉树的区别。 平衡二叉树的定义为:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1, 并且左右两个子树都是一 棵平衡二叉树。 此时指的是这棵树任意两个叶子结点到根结点的距离之差不大于1。节点定义为:struct Node{ int key; Node *lchild, *rchild, *parent;};转载 2015-02-06 20:21:00 · 1272 阅读 · 0 评论