- 博客(34)
- 资源 (8)
- 收藏
- 关注
原创 《Effective C++(第三版)》-笔记
1. 让自己习惯C++条款01: 视C++为一个语言联邦1.1 C++ 是一个多重泛型编程语言(multiparadigm programming),支持:过程形式(procedural),面向对象形式(object-oriented),函数形式(functional),泛型式(generic),元编程(metaprogramming)。1.2 将C++看做主语言,那么他就四种次语言组
2013-10-08 01:00:25 1475 1
原创 《C++ Primer (5th Edition)》笔记-Part IV. Advanced Topics
注:本文以《C++ Primer(英文版)》(5th Edition)为参考。笔记的其他部分包括:《C++ Primer (5th Edition)》笔记-Part I、《C++ Primer (5th Edition)》笔记-Part II、《C++ Primer (5th Edition)》笔记-Part IIIPart IV. Advanced Topics
2013-10-05 19:03:37 2163
原创 《C++ Primer (5th Edition)》笔记-Part III . Tools For Class Authors
注:本文以《C++ Primer(英文版)》(5th Edition)为参考。笔记的其他部分包括:《C++ Primer (5th Edition)》笔记-Part I、《C++ Primer(5th Edition)》笔记-Part IIPart III Tools For CLass AuthorsChapter 13 Copy Control13.1 与
2013-10-03 15:22:14 1950 2
原创 《C++ Primer (5th Edition)》笔记-Part II . The C++ Library
注:本文以《C++ Primer(英文版)》(5th Edition)为参考。Part II. The C++ LibraryChapter 8. The IO Library8.1 针对wchar_t,定义了以w开头的IO类,如wistream、wifstream、wistream、wcin等等。8.2 IO 对象不可赋值,不可拷贝。一般也不定义其const refere
2013-10-01 01:50:26 1969
原创 判断字符串是否包含另一字符串的全排列
问题:给定两个字符串A和B,判断A中是否包含由B中字符重新排列成的新字符串。例如:A=abcdef, B=ba,结果应该返回true。因为ba的排列ab,是A的子串。本问题来自:微信公众账号“待字闺中”。分析:设A的长度为n,B的长度为m很直观的做法是:1)先分析B中的字符有有哪些,每种字符出现的多少次。2)遍历A中每个长度为m的子串,统计字符,然后与B的统计结果对
2013-09-29 17:07:01 2935
原创 《C++ Primer (5th Edition)》笔记-Part I . The Basics
注:本文以《C++ Primer(英文版)》(5th Edition)为参考。Chapter 1 Getting Started略。。。Part I The BasicsChapter 2 Variables and Basic Types2.1 Arithmetic types分为两类:integral types & floating-point types.2.2 新
2013-09-28 01:45:44 2211
原创 二叉树的非递归遍历
在实际应用中,二叉树的遍历一般都采用递归形式,简洁、直观。但在笔试、面试中却很喜欢考察非递归形式的写法,下面将二叉树的非递归遍历实现总结如下:节点定义:struct Node{ int val; Node *left, *right;};1)中序遍历实现Ivoid InOrderTraverse(Node *root){ stack st; st.
2013-09-20 16:35:29 651
原创 KMP算法
在KMP算法中,next数组的计算是关键。以下是几种求解next数组的方法:1)个人认为最好理解的方法 void getNext(string str, vector &next){ if(str.empty()){ next.clear(); return; } int len = str.length(); next.resize(len);
2013-09-20 11:03:29 619
原创 LeetCode经典题目备忘I
1、有序单链表转平衡BST时间复杂度O(n)BinaryTree* sortedListToBST(ListNode *& list, int start, int end) { if (start > end) return NULL; // same as (start+end)/2, avoids overflow int mid = start
2013-09-15 19:49:06 1177
转载 求最长等差数列
一下内容转自:微信:待字闺中原题给定未排序的数组,请给出方法找到最长的等差数列。分析题目描述比较简单,但是有一个问题我们需要首先搞清楚:等差数列中的数字,是否要和原始数组中的顺序一致。题目中,并没有说明,这个就需要大家在面试的过程中和面试官进行交流。我们在这里对两种情况都进行讨论保证数字的顺序等差数列是要求相邻
2013-09-07 13:07:31 1698
原创 鹊桥的长度
问题:@陈利人有n对喜鹊。每一对可以表示为(x,y),x、y是喜鹊的编号,并且任意一对,x总是小于y。(c,d)可以连接在(a,b)之后,当且仅当bps:这里鹊桥的长度为能连接在一起的喜鹊的个数。分析I:在二维上,可以构造一个拓扑图(有向图),边长都为1,然后找出一条最长路径。时间复杂度O(n^2)。分析II:在一维上,先将喜鹊按x排序,
2013-08-14 12:32:33 1022
原创 k个数相加和为m的种数
问题I:盒子中有n张卡片,上面的数字分别为k1,k2,...,kn。你有4次机会,每抽一次,记录下卡片上的数字,再将卡片放回盒子中。如果4个数字的和等于m。则你就赢得游戏,否则就是输。直觉上,赢的可能性太低了。请你给出程序,判断是否有赢的可能性。分析:要求的是能够赢得游戏概率,很明显,若能够求出4个数子和为m的种数(记作T),那么赢的概率就为T/n^4。这里,将核心部分扩展为问
2013-08-13 16:35:17 4726 1
原创 丑数
定义:只包含因子2、3和5的数称作丑数(Ugly Number)。那么丑数依次为:1 2 4 5 8 10 16 20 25 32 40 50 64 80 100 125 128 160 200 250...问题:找出前n个丑数。分析I:最直接,最暴力的方法是单独判断每个数是否是丑数,太丑陋了,这里就不说了。分析II:这个问题,可以用
2013-08-12 11:38:56 1018
原创 和为N的种数——背包变形
问题:给一正数数组A,一正整数n,数组A的元素相加能够得到和为n的种数。例如:数组为[5, 5, 10, 2, 3] ,n 为 15,那么种数就为4,分别为:(5 + 10, 5 + 10, 5 + 5 + 2 + 3, 10 + 2 + 3)。分析:最直接的方法就是枚举,但这样的时间复杂度将是指数级的,太暴力了!其实,这一问题与01背包问题类似。用f[
2013-08-07 14:30:23 935
原创 原地归并
问题I:传统归并排序需要O(n)的空间发杂度,但是否能够实现原地归并排序呢?即O(1)的空间复杂度。时间复杂度还是否是O(logn)?对于这个问题,网上有很多资料,讲的比较清楚的有下面这个帖子:http://www.ahathinking.com/archives/103.html我们知道,无论是基于单个记录的两两归并,还是利用插入排序先得到较长的子序列然后归并,在算法
2013-08-03 19:32:42 1260 3
原创 老鼠与毒酒
问题I:有1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。现在我们用小老鼠做实验,要在1周内找出那桶毒酒,问最少需要多少老鼠。这是老鼠与毒酒最经典问法。分析:此问题可以用二进制的思想来解答。将1000桶酒编号为0,1,...,999。用10只老鼠分别二进制中的相应位,即第1只老鼠,喝掉编号的二进制表示中右边第一位为1的桶内的酒,即1,3,5,7,。。
2013-08-02 11:39:33 3066
原创 赛马问题
问题:有25匹马,但只有5个跑道,即每场比赛只能五匹一起跑,那么最少需要举行几场比赛,才能确定前三甲呢?分析:首先, 将25匹马分为5组A、B、C、D、E组,每组跑一次,确定出每组的名次;需要跑5场。假设:A1>A2>A3>A4>A5B1>B2>B3>B4>B5C1>C2>C3>C4>C5D1>D2>D3>D4>D5E1>E2>E3>E4>E5即
2013-08-01 12:04:18 1080
原创 类似杨辉三角问题——第n杯水
问题:有一座金字塔,从上到下,第一层有一个杯子、第二层有两个杯子,依次类推。对杯子进行编号,有如下的形状: 1 2 34 5 6每个杯子的容量为C升,从塔顶倒下L升水,当1号杯子满了之后,会等量溢出到2号和3号杯子。当2号和3号满了,2号溢出到4号和5号,3号溢出到5号和6号,注意5号接受来自两个杯子的水。依次类推。给定C和L,请问,第n杯里有多少水。fro
2013-07-31 02:09:35 1634
原创 n个色子的点数
问题:n个色子,每个色子m面,每一面的值分别是1-m。你将n个色子同时抛,落地后将所有朝上面的数字加起来,记为sum。给定一个数字x,如果sum>x,则你赢。给定n,m,x,求你赢的概率。分析:何海涛的《剑指offer》中有类似的题目,但这里问的更Gerneral。要求的是概率,所以可以从两个方面入手:种类数 & 概率。PS:认为每个面的值为0,1,...,m-1。
2013-07-29 13:44:40 884
原创 出界的概率
问题:一个小岛,表示为一个N×N的方格,从(0,0)到(N-1, N-1),一个人站在岛上,位置(x, y),他可以上下左右走,一步一个格子,他选择上下左右的可能性是一样的。当他走出小岛,就意味着死亡。假设他要走k步,请问他死亡的概率有多大?分析I:要求概率,首先想到计算出所有路径的种数N,以及出界的路径种数M,死亡的概率就是N/M了。计算路径种数可以用DP的思想:
2013-07-26 12:50:46 840
原创 两道概率面试题
问题一:一根一米长的绳子,随机断成三段;求最短的一段的期望长度以及最长的一段的期望长度。分析:这道题实际是一道纯粹的概率题,没有太多技巧。自己有推导,但是概率论忘得差不多了,退出来的概率有点诡异;以后补充一下知识,再推导。先放一下@陈利人 给出的答案吧,比较简略:绳子的长度分析,有时间,我会补充一个详细的。问题二:52张牌,四张A,随机打乱后问,从左到右
2013-07-25 11:43:08 2236
转载 楼层扔鸡蛋问题
==有限层数和蛋数,求即使最坏情况下需要的最少判断次数==两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋。(参见[两个鸡蛋--一道Google面试题])这是典型的动态规划问题。假设f[n]表示从n层楼找到摔鸡蛋不碎安全位置的最少判断次数。假设第一个鸡蛋第一次
2013-07-24 12:33:23 1048 2
原创 找出会移动的奖品
问题:有n个瓶子,有一个奖品,游戏者需要猜出奖品在哪个瓶子中。有n个黑色的瓶子(以至于游戏中看不到瓶中是否有东西)设从0到n-1编号,一字排开。每一次如果游戏者猜错了,那么奖品会各以50%的概率移动到左边或者右边的瓶子中。当奖品位于最左边或者最右边,游戏者猜错时,奖品必然右移或者左移。请问,游戏者最少需要猜多少次,可以保证猜到奖品位置。ps:好像是网易游戏面试题,比
2013-07-24 10:57:24 1145
原创 寻找波谷
问题:给定数组A[1...n],满足:n>=3, A[1]>=A[2], A[n] >= A[n-1]。若A[i]为波谷,则:A[i-1] >= A[i] 请在O(logN)时间内,找到数组中的一个波谷。分析:根据数据数组的两端的情况,可知:整个区间必存在波谷。要求O(logN),首先想到二分:设区间为【left,right】,满足left>= left+
2013-07-22 11:30:57 1333
原创 三路划分
问题:对一个只可能含有1、2、3三种值的数组,按升序排序。另一种常见问法:有一个只可能含有红、绿、蓝三种颜色的序列,进行分类,使红色都位于最左边,蓝色都位于最右边。解: 实际是对快排中用到的二路划分的扩展——三路划分。设原数组为A, 有n个元素。使用三个指针left, middle, right, 那么A[0]...A[left-1]的值都为1A[left]...A
2013-07-21 11:33:07 1536 1
原创 最长的含有相同数目的01子串 & 括号匹配问题
题目:给定一个字符串,字符串中只包含‘0’和‘1’。请找到一个最长的子串,使得其中0和1的数量是相同的例1:“10101010” 结果就是其本身例2:“0011110”结果是“0011”变形:给定一个字符串,字符串只包含‘(’和‘)’,请找出一个最长的子串,使得该子串满足括号法则。例1:“(()())()()”结果为自身例2:“())()()(”结果为“()()"
2013-07-20 09:16:42 3080 1
原创 N个正整数连接成最大的数
题目:给出N个正整数,如 {7, 959, 95, 71, 1}, 求将这些数连接起来所组成的最大的数,即959957711。变形:给出N个由0...9组成的字符串(开头可能为零),求将这些字符串连接起来,所组成的最大的数。代码:#include #include #include #include using namespace std;string MaxNum
2013-07-19 12:58:33 1774 1
原创 柱状图中找最大矩形 & 矩阵中找最大的仅含相同值的矩形区域
一、具体题目如下:给一组非负的整数来表示一个柱状图,设计一个算法获得柱状图中最大矩形的面积。比如,输入如下数据:2,1,5,6,2,3 ,其中每个数表示一个柱状条的高度,柱状条的宽度为默认值1,则计算得最大矩形的面积为10。 ==>此问题,在Leetcode中有原题:Largest Rectangle in Histogram算法时间复杂度o(n):class Soluti
2013-07-18 11:46:27 2820 3
转载 win7下Matlab中out of memory错误的解决办法
之前在IIT时就遇到本本跑matlab时out of memory,一直没有去想怎么解决,直接将程序发到工作站跑的.回来后没有条件,还是遇到这个问题了. 跑程序时内存空间实际上足够,但却装不下一个大容量的矩阵,原因是保存这个矩阵需要连续的内存空间,而现有的空间都是碎片. 网上解决方法说1 预先定义大矩阵,2 及时clear无用变量,3 用pack命令4增加虚拟内存. 前3个对我都不管用
2011-11-04 14:36:03 5939
原创 C语言下的封装、继承与多态
上次课,钱SIR提到,Liux下面也有很多用C实现的面向对象的结构。比较感觉兴趣,就在网上查了一些资料,原来C语言模拟实现面向对象语言所具有的特性:多态,继承,封装,也是一件很简单的事儿。并且现在很多开源软件都了用C语言实现了这几个特性,包括大型开源数据库系统postgreSQL
2011-10-12 16:56:22 2384
原创 NVIDIA CUDA C GETTING STARTED GUIDE FOR MICROSOFT WINDOWS
DOWNLOAD THE CUDA SOFTWAREThe CUDA software is available athttp://www.nvidia.com/object/cuda_get.html.Choose the platform you ar
2011-09-23 16:37:53 859
转载 CString、LPCTSTR、LPTSTR、TCHAR、WCHAR、string、wchar_t、char解析
一.类型简介1.CString:动态的TCHAR数组。它是一个完全独立的类,封装了“+”等操作符和字符串操作方法,换句话说就是CString是对TCHAR操作的方法的集合。2.LPCTSTR:常量的TCHAR指针,其定义为 1typ
2011-08-03 19:34:04 845
需求规格说明书模板(SRS)
2009-12-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人