- 目前状况
- 引用和指针的区别?
1、两者的定义和性质不同 指针是一个变量,存储的是一个地址,指向内存的一个存储单元;引用是原变量的一个别名,跟原来的变量实质上是同一个东西。
2、指针可以有多级,引用只能是一级
3、指针可以在定义的时候不初始化,引用必须在定义的时候初始化
4、指针可以指向NULL,引用不可以为NULL
5、指针初始化之后可以再改变,引用不可以
- 在一个大小为n的数组中,其中有一个数出现的次数超过n/2,求出这个数?
这题看似很简单,但是找到最优解不容易,一般情况我们首先想到最笨的方法,每选一个数,遍历一次数组,复杂度O(N^2),或者先排序再找那个数,复杂度一般为O(NlgN),或者用hash,时间复杂度O(N),空间复杂度需要看输入的数据规模,空间复杂度O(N)。所以这些都不是最优解,我们先分析一下这个题目,设该数出现的次数为x,则x满足,n/2+1<= x <=n;所以我们可以想到如果该数和其余的数全部相抵消的话,至少还剩1个,我们从前往后遍历,设key为第一个数,key出现的次数为ntime,初始化为1,代表key出现了一次,从前往后,如果某个数不等于key,则他俩抵消,key的出现次数减一,如果等于key,则key的出现次数加1,如果key的出现次数变成了0,则说明key已经用完了,所以需要重新初始化key为另一个数,再重复以上步骤,因为一定有一个数大于n/2,所以遍历到最后剩下的那个数,就是要求的数。
-
头文件“”和<>有什么区别?
-
用过多线程吗?
6.堆和栈的区别?
1.堆栈空间分配不同。栈由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等;堆一般由程序员分配释放。
2.堆栈缓存方式不同。栈使用的是一级缓存, 它们通常都是被调用时处于存储空间中,调用完毕立即释放;堆则是存放在二级缓存中,速度要慢些。
3.堆栈数据结构不同。堆类似数组结构;栈类似栈结构,先进后出。