L_J_SHOU

03 2014 档案

LeetCode----Unique Binary Search Trees 2
摘要: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... 阅读全文

posted @ 2014-03-31 21:10 L_J_SHOU 阅读(126) 评论(0) 推荐(0)

Linux----七个有效的文本编辑习惯
摘要:如果你要花大量的时间键入文本, 写程序或编写HTML脚本, 你可以通过有效地使用一个好的编辑器来替你节省时间. 本文将引导你如果快速地完成你的编辑工作, 并且减少你的错误. 本文将以开放源码软件Vim(Vi IMproved)为例向你展示如何进行有效的编辑, 但这里提到的原则对其它的编辑器也是一样... 阅读全文

posted @ 2014-03-31 11:59 L_J_SHOU 阅读(201) 评论(0) 推荐(0)

Linux----快速注释包含特定字符串的行
摘要:常常会需要将程序中的输出语句注释,往往手工非常慢,而且容易漏。今天研究了 linux 的 sed, 真心好用。。例子: 将 包含 cout 的语句注释,也就是说包含cout 语句前加入字符串 //做法1: 在vi 中, :1,$s/^.*cout/\/\/&/g解释一下: $ 表示最后一行^ 表示行... 阅读全文

posted @ 2014-03-30 21:28 L_J_SHOU 阅读(1298) 评论(0) 推荐(1)

Linux---- vim 插件
摘要:http://hi.baidu.com/omnice/blog/item/4ba97317cc67cc10962b4378.htmlfuzzyfinder.vim 可以替代四个插件, 不过这个插件也不是完美的,比如 和favex.vim相比,它的收藏夹缺少对目录的支持 和selectbuf.vim相... 阅读全文

posted @ 2014-03-27 15:02 L_J_SHOU 阅读(271) 评论(0) 推荐(0)

Interview----最长连续乘积字串
摘要:题目描述:给一个浮点数序列,取最大乘积连续子串的值,例如 -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)首先... 阅读全文

posted @ 2014-03-26 21:55 L_J_SHOU 阅读(214) 评论(0) 推荐(0)

STL 源码分析《5》---- lower_bound and upper_bound 详解
摘要:在 STL 库中,关于二分搜索实现了4个函数。bool binary_search (ForwardIterator beg, ForwardIterator end, const T& value)判断 [beg, end) 中是否存在 value 的值。ForwardIteratorlower_... 阅读全文

posted @ 2014-03-23 16:18 L_J_SHOU 阅读(251) 评论(0) 推荐(0)

C++ Primer---- 奇怪的 protected 成员
摘要:protected 成员在 C++ Primer 第四版中有如下描述:可以认为 protected 标号是 private 和 public 的混合: 1. 像 private 成员一样, protected 成员不能被类的用户访问。 2. 像 public 成员一样, protected 成员可被... 阅读全文

posted @ 2014-03-19 19:37 L_J_SHOU 阅读(141) 评论(0) 推荐(0)

Design Patterns---- Strategy 模式
摘要:设计模式:可复用面向对象软件的基础 书中对 Strategy 模式的定义如下:定义了一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于它的用户而变化。案例:设计一个商场收银软件,营业员根据客户所购买商品的单价和数量,向客户收费。商场有许多促销的策略,打折,满300减10... 阅读全文

posted @ 2014-03-17 22:16 L_J_SHOU 阅读(127) 评论(0) 推荐(0)

C++ Primer----一个关于 vector 的有趣的问题
摘要:大家请看下面的代码,请问 输出结果是??/** * @file vector-destroy.cc * @brief an interesting problem regarding vector * @author shoulinjun@126.com * @version 0.1.00 * ... 阅读全文

posted @ 2014-03-16 20:21 L_J_SHOU 阅读(145) 评论(0) 推荐(0)

Design Patterns----简单的工厂模式
摘要:实例:实现一个简单的计算器。实现加减乘除等操作。。operator.h 文件// copyright @ L.J.SHOU Mar.13, 2014// a simple calculator using Factory Design Pattern#ifndef OPERATOR_H_#defin... 阅读全文

posted @ 2014-03-14 16:56 L_J_SHOU 阅读(135) 评论(0) 推荐(0)

Interview----用最快的方法计算 Fibonacci 数
摘要:输入 n, 用最快的方法求该 Fibocacci 数列的第 n 项。方法1: 递归,非常慢方法2: 迭代,因此计算 f[1] , f[2], f[3] ,,,, 复杂度 O(N)方法3:采用以上公式,计算 n 幂次的时候,采用二分的思想。可将复杂度提高到 O(lgN)具体代码如下。// copyri... 阅读全文

posted @ 2014-03-12 22:08 L_J_SHOU 阅读(178) 评论(0) 推荐(0)

算法----约瑟夫环问题
摘要:约瑟夫环是一个数学的应用问题:已知n个人(以编号0,1,2, ... n-1 分别表示)围坐在一张圆桌周围。从编号为0的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。求最后一个出列的人的序号。。方法 1:模拟游戏。利用数... 阅读全文

posted @ 2014-03-11 22:06 L_J_SHOU 阅读(169) 评论(0) 推荐(0)

Interview----First single charactor
摘要:题目:在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。分析:这道题是 2006 年 google 的一道笔试题。分析:用 Hash, 时间和空间复杂度是 O(N)当然,如果字符是 ASCII 编码的话,可以开一个 256长的数组来对每个字符出现的次数进行记录。下面的... 阅读全文

posted @ 2014-03-10 21:02 L_J_SHOU 阅读(134) 评论(0) 推荐(0)

数据结构《15》----二叉树的层序遍历
摘要:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。例如输入 8 / \ 6 10 / \ / \ 5 7 9 11输出 8 6 10 5 7 9 11。分析:与二叉树其他的三种遍历不同,层序遍历使用的不是栈,而是队列。// copyright @ L.J.SHOU Mar... 阅读全文

posted @ 2014-03-10 19:37 L_J_SHOU 阅读(160) 评论(0) 推荐(0)

Interview----将一棵二叉树转换成其镜像
摘要:题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入: 8 / \ 6 10 / \ / \5 7 9 11输出: 8 / \ 10 6 / \ / \11 9 7 5分析:1. 递归,类似与先... 阅读全文

posted @ 2014-03-10 19:03 L_J_SHOU 阅读(168) 评论(0) 推荐(0)

STL源码分析《4》----Traits技术
摘要:在 STL 源码中,到处可见 Traits 的身影,其实 Traits 不是一种语法,更确切地说是一种技术。STL库中,有一个函数叫做 advance, 用来将某个迭代器(具有指针行为的一种 class)移动某个给定的距离。声明如下:template // 将迭代器向前移动 d 单位void ad... 阅读全文

posted @ 2014-03-08 18:20 L_J_SHOU 阅读(258) 评论(0) 推荐(0)

STL源码分析《3》----辅助空间不足时,如何进行归并排序
摘要:两个连在一起的序列 [first, middle) 和 [middle, last) 都已经排序,归并排序最核心的算法就是 将 [first, middle) 和 [middle, last) 在O(N)时间内合并成一个有序数组。但是合并的过程中一般需要 m + n 的额外辅助空间。其中, m 、 ... 阅读全文

posted @ 2014-03-07 21:40 L_J_SHOU 阅读(369) 评论(0) 推荐(0)

Interview----2 sum
摘要:题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是 O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组 1、2、4、7、11、15 和数字 15。由于 4+11=15,因此输出 4 和 11。分析:给出两种算... 阅读全文

posted @ 2014-03-05 22:22 L_J_SHOU 阅读(160) 评论(0) 推荐(0)

Interview----链表的倒数第K个元素
摘要:这个题虽然简单,但是一定要细心,bug-free 能力很重要。分析: 如果不知道链表的长度,可以采用双指针的方法,让一个指针先走 k 步,然后两个指针同时走,前面的指针变成 NULL时, 第一个指针即是倒数第k 个节点。。但是,考虑 k length 等情况。。关于双指针的另一个典型例题就是 求两... 阅读全文

posted @ 2014-03-05 21:43 L_J_SHOU 阅读(155) 评论(0) 推荐(0)

Interview----求 1+2+...+n, 不能用乘除法、for、while if、else、switch、case 等关键字以及条件判断语句 (A?B:C)
摘要:题目描述:求 1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句 (A?B:C)。分析:首先想到的是写递归函数,但是遇到一个问题,递归函数总需要一个出口,不然会无穷递归下去。出口一半是 if() return. 题目又要求不能... 阅读全文

posted @ 2014-03-05 19:33 L_J_SHOU 阅读(233) 评论(0) 推荐(0)

LeetCode---Word Break 2
摘要: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... 阅读全文

posted @ 2014-03-04 16:59 L_J_SHOU 阅读(111) 评论(0) 推荐(0)