摘要:
一个字符串只有‘R’、‘G’、‘B’组成,如何让所有的‘R’出现在前面,所有的‘G’在中间,所有的‘B’在最后。要求:要求空间复杂度为O(1),只许遍历一遍字符串数组之所以叫荷兰国旗,是因为我们可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷兰国旗。如下图所示:算法思路1. 维护三个游标 headPos、currentPos、tailPos2. headPos指向开始, tailPos指向尾部,用于分别插入 R 、B3. currentPos 用于遍历,当发现是R时,与前面的 headPos指的对象交换,然后 headPos后移;当发现是B时,与后面的 tailPos指的对象交换,tai 阅读全文
随笔分类 - Algorithm
堆的实现、堆排序及其应用
2013-10-23 02:10 by Ross Wang, 4120 阅读, 收藏,
摘要:
堆排序和其他排序算法的比较上图引自:http://hi.baidu.com/ycdoit/item/6b5f5b9571a843becc80e560,这篇文章也解释了可能的优化途径。(sort 是STL的排序方法,qsort是库函数,quicksort是没有经过优化的快速排序实现,Heapsort是... 阅读全文
一道有趣的字符串部分转逆算法题
2013-10-21 23:10 by Ross Wang, 439 阅读, 收藏,
摘要:
题目要求给定字符串,将字符串中每个单词中的连续字符转逆,数字保持不变,比如输入:ab12cd 34 jkl897输出:ba12dc 34 lkj897无标点符号。函数原型:void HandleStr(char * result, const char * src)直接代码:#include /******************给定字符串,将字符串中每个单词中的连续字符转逆,数字保持不变,比如输入:ab12cd 34 jkl897输出:ba12dc 34 lkj897无标点符号。函数原型:void HandleStr(char * result, const char * src)***** 阅读全文
根据前序遍历和中序遍历的结果确定一颗二叉树并用树形格式打印输出
2013-10-21 01:12 by Ross Wang, 1140 阅读, 收藏,
摘要:
前提根据一颗二叉树的前序遍历和中序遍历结果肯定可以唯一地确定一颗二叉树.证明:http://wenku.baidu.com/view/bf365b3431126edb6f1a1041.html本篇文章主要解决两个问题:1. 根据所给的前序和中序遍历结果确定一颗二叉树2. 用我们熟悉的树形格式打印输出二叉树确定二叉树主要思想网上有很多帖子都提到了, 基本思路:1. 从前序遍历结果获取父节点。2. 用这个父节点把中序遍历结果分为两部分,左边是左子树的结点(可能为空),,右边是右子树的结点(也可能为空)。3. 如果左子树不为空,递归进行1,2步,右子树类似。树形格式输出二叉树一般情况下,无论是前序、 阅读全文
浙公网安备 33010602011771号