摘要: static最显著的两个作用:在类中修饰成员变量,修饰成员函数。这表示这些成员变量和成员函数是属于类的,不属于某个具体实例。初始化静态成员变量在进入main函数之前进行,且初始化只进行一次(如何建立单例,就是从这里入手)。静态成员函数不可能是虚函数,但可以调用实例方法(静态成员函数接收一个实例,然后 阅读全文
posted @ 2016-04-04 23:02 vaevaevae 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 1 #include<iostream> 2 using namespace std; 3 4 class ba{ 5 public: 6 ba(){cout<<"ba"<<endl;} 7 virtual char* vf() const=0; 8 }; 9 10 class bas:public 阅读全文
posted @ 2016-04-04 22:05 vaevaevae 阅读(166) 评论(0) 推荐(0) 编辑
摘要: private继承的意思是“根据某物实现出”,是一种“has-a”的关系。而不像public继承那样继承了接口,是一种“is-a”的关系。 private继承一般可以通过复合来代替,但也有些情况会比复合更好 1 #include<iostream> 2 using namespace std; 3 阅读全文
posted @ 2016-04-04 12:06 vaevaevae 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 还是利用深搜的思想,注意一个元素可以取无数次。而LC40 Combination Sum II 就有次数限制,有次数限制的情况下可以先判断一个数是否与它前面的数相等,若相等则跳过该元素,直到找到一个数与它前面的数不等,再进行深搜。 这里附上LC39的代码 1 class Solution { 2 p 阅读全文
posted @ 2016-04-03 17:11 vaevaevae 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 可以用类似于DFS的方法去做。这道题目是LC78 Subsets的子问题。 对于LC78,另一个巧妙的做法是:我们可以先用一个整形数组(长度和nums相等),数组元素一开始都是1。把整个数组看成一个二进制数,然后模拟二进制减法,将这个数组一步一步减1减到0。每减一次1,对照这个二进制数组和nums数 阅读全文
posted @ 2016-04-03 15:53 vaevaevae 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 这道题目有两种做法,第一种是把排列一直列到第k个。另一种做法是利用康托编码,如果把n!个排列根据首个数字大小排列成n组,则每一组有(n-1)!个元素,求第k个排列,可以先令p=k/(n-1)! 求出第一个数字num[p]. 然后递归做下去。更新数字k=k%(n-1)!,并在数组num中删除num[p 阅读全文
posted @ 2016-04-02 19:15 vaevaevae 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 有关排列的题目,如果用DFS去做,就十分低效。这里介绍一种做法:求下一个序列,先从尾部开始找最长的递增数组,如果从尾到头都是递增,则这已经是最大序列,下一个序列就是将最大序列翻转一下。如果不存在递增数组,则将最后两位数交换一下。其他情况,则记录下递增数组的前一位数,并找出递增数组中比这个数大的最小的 阅读全文
posted @ 2016-04-02 19:03 vaevaevae 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 典型的动态规划题,和《剑指offer》中的矩形覆盖题相似,只不过要考虑不同的边界情况。 另外对于《剑指offer》中的矩形覆盖题,值得考虑的是当矩形是n*n时,会有多少种覆盖的情况? 1 class Solution { 2 public: 3 int numDecodings(string s) 阅读全文
posted @ 2016-04-01 20:10 vaevaevae 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 利用最小堆思想。首先把1压入堆,然后取出堆顶元素,分别乘以2,3,5后把新增的数压入堆。然后再取堆顶元素操作。取第1000个丑数就是取第1000个不同的堆顶元素。 其实如果用set容器来做的话效率可能会提升,因为set不会把重复元素放进自身。set找最小的元素需要O(logN)的时间,表面上比堆的O 阅读全文
posted @ 2016-03-29 23:02 vaevaevae 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 这道题目首先不管random指针,按照next指针把链表元素给复制出来。然后处理random指针,比较容易想到的想法是利用哈希思想(或者等价的map,set等stl容器),但这样的话需要辅助空间。 不需要辅助空间的方法,复制元素的时候把原始链表改成这样就可以了: 然后修改新增元素的random指针, 阅读全文
posted @ 2016-03-29 22:52 vaevaevae 阅读(143) 评论(0) 推荐(0) 编辑