摘要:
使用最广同时也是面试问的最多的一个设计模式 代码: /** 单例:即程序只能拥有一个实例,比如数据库连接池、日志系统等,这个类提供了一种访问其唯一的对象的方式。 * 单例分饿汉式和懒汉式,饿汉式无线程安全问题,懒汉式在多线程场景下存在线程安全问题,需要加锁实现线程同步。 */ #include <m 阅读全文
摘要:
1. 回调函数与普通函数的区别 回调函数即函数指针来实现,可实现多态效果;信号处理函数一般也设置成回调,当事件发生,通过回调函数通知。 2. 函数返回局部变量时的一些优化:编译器的NRV优化,C++11的move 实际上归根结底是减少拷贝,构造和析构的次数,提高实现效率,只是实现方面的不同罢了。 3 阅读全文
摘要:
1. 从快排partition过程借鉴而来,利用partion过程每次能确定一个元素位置来实现。 此算法期望时间复杂度为O(N),最差为O(N^2)。 每次确定了一个元素位置后,就能判断待查的topk个元素是在哪个分区,只需要递归一个分区即可。 代码如下: int quickSelect(vecto 阅读全文
摘要:
## 快速排序(代码) 写这篇文章之前至少做了不下十遍快排,但现在仍然不能保证一写就A,故记录一下。 partition过程的边界条件不是很好弄,因此面试经常出现。 partition单向划分:三个区域 <= > ? int partition1(vector<int>& nums, int l, 阅读全文