- 博客(14)
- 资源 (2)
- 问答 (5)
- 收藏
- 关注
原创 虚继承总结(重点:虚继承与虚函数)
虚继承常考题目:下面我们进行分析:因为每个存在虚函数的类都要有一个4字节的指针指向自己的虚函数表,所以每种情况的类a所占的字节数应该是没有什么问题的。 那么类b的字节数怎么算呢?看“第一种”和“第三种”情况采用的是虚继承,那么这时候就要有这样的一个指针vptr_b_a,这个指针叫虚类指针,也是四个字节;还要包括类a的字节数,所以类b的字节数就求出来了。而“第二种”和“第四种
2016-10-05 23:10:54 1007
原创 第一次出现一次的字符
题目:在字符串中找到第一个只出现一次的字符。例如:输入“abcdbbcdd” , 则输出‘a’。思路:最直观的想法就是从头遍历扫描字符串中的每一个 字符。当访问到某一个字符是=时和后面的每一个字符比较,如果没有重复的,那么这个字符就是出现一次的字符。这种思路的时间复杂度O(n2)。今天我们在探讨一种更快的方法。考虑到题目是与次数相关的,那么我们就统计每个字符出现的次数,并且存放下来
2016-10-04 22:59:34 513
原创 最小的k个数
题目:输入n个正整数,找出其中最小的k个数。例如:输入 1 3 5 7 9 8 2 其中 最小的3个数字是 1 2 3思路1:就像前面的快排一样 , 那我们可以找到前k个最小的数字(但是不保证最小数字是有序的)code1:int partation(int* numbers, int length, int begin, int end){ if (begin
2016-10-04 21:47:00 397
原创 数组中出现次数超过一半的数字
题目:数组中有一个数字出现次数超过数组长度的一半,请找出这个数字。例如输入长度为9的数组{1,2,3,2,2,2,5,2,3}。由于数字2在数组中出现了5次,超过数组的一半,因此输出2。思路1:如果我们考虑对数字进行排序,那么排序之后中间的数字一定是出现次数超过数组长度一半的数字。也就是,我们所说的“中位数 ”。考虑到我们并非一定要把整个数组排序完成,受到快速排序的partat
2016-10-04 18:41:46 322
原创 查找二叉树中和为某一个值的路径
题目:输入一颗二叉树和一个整数,打印出二叉树节点中节点值的和为输入整数的所有路径 。从树的根节点往下所经过的节点的形成的路径。思路:先序遍历的方式访问某一个节点时,把该节点添加到路径上,并且累加节点中的值。如果当前节点时叶节点并且累加的值等于输入的值,那么我们就把这条路径打印出来。如果不是叶节点,那么就访问当前节点的左右子树。当前节点的左右子树都访问完了,那么久返回到父节点,(在返
2016-10-03 21:56:25 954
原创 从上到下打印二叉树——层序遍历二叉树
在几次笔试的过程中,都提到了二叉树层序遍历 ,那么我就好好整理下 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入: 8 / \ 6 10 /\ /\ 5 7 9 11输出8 6 10 5 7 9 11。二叉树节点定义:
2016-10-03 20:23:44 927
原创 打印1到最大的n位数
题目:输入数字n,按顺序打印从1到最大的n位十进制数。比如输入3 ,则打印1,2,3 一直到999当然有程序员会很容易想出一个答案:循环数字相乘-->打印仔细分析:如果相乘的数字溢出怎么办?那我们就得另外想办法了。code:void Print_1_To_Max(int n){ if (n <= 0) return; char *number = new
2016-10-03 11:11:21 304
原创 求数值的的整数次方(模拟实现pow函数)
求数值的的整数次方:实现double Power(double base , int exponent),求base的ponent次方。不能使用库函数,同时不考虑大数问题自以为很简单的解法:double Power(double base, int exponent){ double result = 0.0; for (int i = 1; i <= exponent;
2016-10-02 16:55:11 1164
原创 旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾 , 我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如:数组{3,4,5,1,2}是{1,2,3,4,5}的一个旋转,该数组最小值是1。int Min(int arr[], int len){ if (NULL == arr || len <= 0) throw std::exceptio
2016-10-02 14:50:29 288
原创 函数执行过程(预处理->编译->汇编->链接)
一般高级语言程序编译的过程:预处理、编译、汇编、链接具体过程如图:在Linux环境下,我们进行操作:具体内容 ,读者可以自己试试看
2016-10-01 21:18:16 461
VS2013一直创建新的项目
2016-08-18
对于二分法查找,right是数组元素的个数
2016-08-05
c++友元函数和inline函数的区别
2016-06-23
c++友元函数和inline函数的区别
2016-06-23
C语言里面的EOF与\n傻傻分不清楚
2016-05-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人