摘要:Givenn, generate all structurally uniqueBST's(binary search trees) that store values 1...n.For example,Givenn= 3, your program should return all 5 uni...
阅读全文
摘要:如果你要花大量的时间键入文本, 写程序或编写HTML脚本, 你可以通过有效地使用一个好的编辑器来替你节省时间. 本文将引导你如果快速地完成你的编辑工作, 并且减少你的错误. 本文将以开放源码软件Vim(Vi IMproved)为例向你展示如何进行有效的编辑, 但这里提到的原则对其它的编辑器也是一样...
阅读全文
摘要:常常会需要将程序中的输出语句注释,往往手工非常慢,而且容易漏。今天研究了 linux 的 sed, 真心好用。。例子: 将 包含 cout 的语句注释,也就是说包含cout 语句前加入字符串 //做法1: 在vi 中, :1,$s/^.*cout/\/\/&/g解释一下: $ 表示最后一行^ 表示行...
阅读全文
摘要:http://hi.baidu.com/omnice/blog/item/4ba97317cc67cc10962b4378.htmlfuzzyfinder.vim 可以替代四个插件, 不过这个插件也不是完美的,比如 和favex.vim相比,它的收藏夹缺少对目录的支持 和selectbuf.vim相...
阅读全文
摘要:题目描述:给一个浮点数序列,取最大乘积连续子串的值,例如 -2.5,4,0,3,0.5,8,-1,则取出的最大乘积连续子串为3,0.5,8。也就是说,上述数组中,3 0.5 8这3个数的乘积3*0.5*8=12是最大的,而且是连续的。算法1:首先,枚举的话,复杂度是 O(N^2)算法2:O(N)首先...
阅读全文
摘要:在 STL 库中,关于二分搜索实现了4个函数。bool binary_search (ForwardIterator beg, ForwardIterator end, const T& value)判断 [beg, end) 中是否存在 value 的值。ForwardIteratorlower_...
阅读全文
摘要:protected 成员在 C++ Primer 第四版中有如下描述:可以认为 protected 标号是 private 和 public 的混合: 1. 像 private 成员一样, protected 成员不能被类的用户访问。 2. 像 public 成员一样, protected 成员可被...
阅读全文
摘要:设计模式:可复用面向对象软件的基础 书中对 Strategy 模式的定义如下:定义了一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于它的用户而变化。案例:设计一个商场收银软件,营业员根据客户所购买商品的单价和数量,向客户收费。商场有许多促销的策略,打折,满300减10...
阅读全文
摘要:大家请看下面的代码,请问 输出结果是??/** * @file vector-destroy.cc * @brief an interesting problem regarding vector * @author shoulinjun@126.com * @version 0.1.00 * ...
阅读全文
摘要:实例:实现一个简单的计算器。实现加减乘除等操作。。operator.h 文件// copyright @ L.J.SHOU Mar.13, 2014// a simple calculator using Factory Design Pattern#ifndef OPERATOR_H_#defin...
阅读全文
摘要:输入 n, 用最快的方法求该 Fibocacci 数列的第 n 项。方法1: 递归,非常慢方法2: 迭代,因此计算 f[1] , f[2], f[3] ,,,, 复杂度 O(N)方法3:采用以上公式,计算 n 幂次的时候,采用二分的思想。可将复杂度提高到 O(lgN)具体代码如下。// copyri...
阅读全文
摘要:约瑟夫环是一个数学的应用问题:已知n个人(以编号0,1,2, ... n-1 分别表示)围坐在一张圆桌周围。从编号为0的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。求最后一个出列的人的序号。。方法 1:模拟游戏。利用数...
阅读全文
摘要:题目:在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。分析:这道题是 2006 年 google 的一道笔试题。分析:用 Hash, 时间和空间复杂度是 O(N)当然,如果字符是 ASCII 编码的话,可以开一个 256长的数组来对每个字符出现的次数进行记录。下面的...
阅读全文
摘要:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。例如输入 8 / \ 6 10 / \ / \ 5 7 9 11输出 8 6 10 5 7 9 11。分析:与二叉树其他的三种遍历不同,层序遍历使用的不是栈,而是队列。// copyright @ L.J.SHOU Mar...
阅读全文
摘要:题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入: 8 / \ 6 10 / \ / \5 7 9 11输出: 8 / \ 10 6 / \ / \11 9 7 5分析:1. 递归,类似与先...
阅读全文
摘要:在 STL 源码中,到处可见 Traits 的身影,其实 Traits 不是一种语法,更确切地说是一种技术。STL库中,有一个函数叫做 advance, 用来将某个迭代器(具有指针行为的一种 class)移动某个给定的距离。声明如下:template // 将迭代器向前移动 d 单位void ad...
阅读全文
摘要:两个连在一起的序列 [first, middle) 和 [middle, last) 都已经排序,归并排序最核心的算法就是 将 [first, middle) 和 [middle, last) 在O(N)时间内合并成一个有序数组。但是合并的过程中一般需要 m + n 的额外辅助空间。其中, m 、 ...
阅读全文
摘要:题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是 O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组 1、2、4、7、11、15 和数字 15。由于 4+11=15,因此输出 4 和 11。分析:给出两种算...
阅读全文
摘要:这个题虽然简单,但是一定要细心,bug-free 能力很重要。分析: 如果不知道链表的长度,可以采用双指针的方法,让一个指针先走 k 步,然后两个指针同时走,前面的指针变成 NULL时, 第一个指针即是倒数第k 个节点。。但是,考虑 k length 等情况。。关于双指针的另一个典型例题就是 求两...
阅读全文
摘要:题目描述:求 1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句 (A?B:C)。分析:首先想到的是写递归函数,但是遇到一个问题,递归函数总需要一个出口,不然会无穷递归下去。出口一半是 if() return. 题目又要求不能...
阅读全文
摘要:Given a string s and a dictionary of wordsdict, add spaces ins to construct a sentence where each word is a valid dictionary word.Return all such poss...
阅读全文