剑指Offer
文章平均质量分 57
0909LQ
小陈醋的代码进阶之路
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
sizeof() 类大小,空类大小
一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小.首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。 如果 Class A; A obj; 那么sizeof(A)==sizeof(obj) 那么sizeof(A)的大小和成员的大小总和是什么关系呢,很简单,一个对象的大转载 2015-07-20 21:33:03 · 459 阅读 · 0 评论 -
和为某一值的连续正序列
题目:输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、4~6和7~8void print(int* nums, int left, int right){ for(int i= left; i<= right; ++i) { cout<<nums[i]<<","; }原创 2015-08-04 21:59:57 · 403 阅读 · 0 评论 -
树上两个结点的公共祖先
这道题可以分为好几种情况:首先,节点只有左、右子树,没有parent指针,不是二叉搜索树这种情况我们可以进行深度搜索,在某一节点下,我们进行深度搜索,如果其孩子正好有等于a子节点,则返回该子节点,同理可以适用于b子节点原创 2015-08-04 22:58:44 · 352 阅读 · 0 评论 -
不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用加、减、乘、除四则运算符号。分析:不能用加减乘除四则运算,那很明显就只能用位运算符了,加法的运算个位数相加,得出一个个位上的数,如果有进位,则在十位上相加后得出的数的基础上加上前面相加得出的进位数。个位数相加,我们可以想到用位运算中的异或^,进位运算符我们可以使用与&,然后左移一位。这些其实是需要根据实际的分析才能得出这样的答案:原创 2015-08-03 22:42:17 · 285 阅读 · 0 评论 -
Leetcode 105 Construct Binary Tree from Preorder and Inorder Traversal
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ cl转载 2015-07-23 16:59:33 · 405 阅读 · 0 评论 -
求数组中和为某一值的全部组合
下面先贴出代码,然后再说几点应该特别注意的。void Print(int* numbers, int start, int end){ for(int i = start; i<= end; ++i) { cout<<numbers[i]; } cout<<endl;}void FindNumbers(int* numbers, int length,int k){原创 2015-08-15 16:22:36 · 4585 阅读 · 1 评论 -
判断二叉树是不是平衡二叉树
判断一个二叉树是不是平衡二叉树,我们首先会想到的是先求得当前根节点的左子节点的深度和右子节点的深度,如果两个深度相差超过1,则不是平衡二叉树,这样的话,其实当我们从最开始的根节点开始时,我们从要从根节点开始遍历取得当前左子节点和右子节点的深度,这样其实是遍历了一次树,但是当我们判断得出当前根节点是平衡的,那当我们判断他的左子节点和右子节点呢?又要几乎遍历一次树,这样无疑复杂度会提高;还有一种方原创 2015-08-15 10:46:12 · 563 阅读 · 0 评论 -
Singleton模式,类模板,多线程
Singleton模式据说是面试的时候考的最多的一种设计模式,所以这两天认真研究了一下Singleton模式,中间也遇到了一些问题,还好最终都慢慢得以解决Singleton模式也是单例模式,目的主要是实例化唯一一个对象,有且只有一个,我们当然不可以通过构造函数直接实例化,这样的话对象将不止一个了,所以我们将构造函数声明为private或者protected,同样的道理拷贝构造函数、赋值操作函数原创 2015-07-22 14:19:33 · 425 阅读 · 0 评论 -
面试题36:数组中的逆序对
题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例如,有一个数组为Array[0..n] 其中有元素a[i],a[j].如果 当ia[j],那么我们就称(a[i],a[j])为一个逆序对。在数组{7,5,6,4}中一共存在5对逆序对,分别是(7,6),(7,5),(7,4),(6,4),(5,4)。参考文献转载 2015-08-01 22:43:24 · 362 阅读 · 0 评论 -
字符串的全排列和组合算法
文章转自:http://blog.youkuaiyun.com/hackbuteer1/article/details/7462447全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。转载 2015-07-31 20:28:08 · 433 阅读 · 0 评论 -
LeetCode SubSets
class Solution {public: vector> result; vector tmp; void Combination(int idx, int number, vector &nums) { if(nums.size() == 0) { return; }原创 2015-07-31 19:11:42 · 362 阅读 · 0 评论 -
剑指Offer(33)求数组排列出来的最小数
求数组排列的最小数,一来可以通过求出各种排列组合,然后进行比较,得出结果,但这样会带来很多问题,一是计算量很大,时间复杂度高;二是排列出来的数可能是大数,不在int的比较范围之内。还有一种方法,也是借鉴网上的方法,就是将排列好的大数转换成string类型,然后用泛型函数里的sort进行比较排序。这样就得出想要的答案了。当然首先要将int型的各个数组转换成string类型,这里借助了sstrea原创 2015-08-01 17:06:46 · 431 阅读 · 0 评论 -
字符串的全排列
全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。首先来看看题目是如何要求的(百度迅雷校招笔试题)。一、字符串的排列用C++写一个函数, 如 Foo(const char *转载 2015-07-31 15:12:58 · 335 阅读 · 0 评论 -
静态变量的初始化
静态数据成员的使用方法和注意事项如下: 1、静态数据成员在定义或说明时前面加关键字static。 2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下: ::= 这表明: (1) 初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆。 (2) 初始化时不加该成员的访问权限控制符private,原创 2015-07-21 10:20:40 · 6808 阅读 · 0 评论 -
(面试题25题)LeetCode Path Sum II
class Solution {private: vector> ret;public: void pathsum(TreeNode* root, vector &path, int &CurSum, int sum) { if(root == NULL) { return; }原创 2015-07-31 10:25:54 · 425 阅读 · 0 评论 -
(面试题23)从上打印二叉树
题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。从上打印二叉树,可以选择借助STL中的队列,也可以选择使用容器Vector(LeetCode使用的就是Vector)我们在每次打印出根节点的时候,把其左子节点、右子节点依次放入队列中,然后依次打印。下面给出代码:(注意:这里要注意函数的鲁棒性) void PrintFromTopToBottom(Bin原创 2015-07-30 21:59:56 · 325 阅读 · 0 评论 -
(面试题24)二叉搜索树的后序遍历
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false.假设输入的数组的任意两个数字都互不相同。根据二叉搜索树的后序遍历的规律,我们可以写出如下代码: bool VerifySequenceOfBST(int arrayInput[], int length){ if(arrayInput == NULL || leng转载 2015-07-30 21:49:24 · 403 阅读 · 0 评论 -
C++中的四种强制类型转换
C++的四种强制类型转换分别为:static_const,dynamic_cast,const_cast,reinterpret_cast为什么使用C风格的强制转换可以把想要的任何东西转换成合乎心意的类型。那为什么还需要一个新的C++类型的强制转换?新类型的强制类型转换可以提供更好的控制强制转换过程,允许控制各种不同类的转换。C++中风格是static_cast(content).C++风原创 2015-07-20 21:15:37 · 586 阅读 · 0 评论
分享