回溯法

回溯法是五大常用算法之一,回溯法也是一种暴力算法。我们在图的深度遍历时,其实就用到了回溯法,先选择一条路走,当出现走不通的情况,再返回上一种重新选择一种走法,直到遍历所有节点。常见的八皇后问题也能够使用回溯法来求解。 八皇后问题 回溯法解决八皇后问题时,是对每一行的每一个位置进行遍历,确定每一...

2018-09-25 16:26:11

阅读数 367

评论数 0

进制转换

各种机制转换函数 strtol函数 它的功能是将一个任意1-36进制数转化为10进制数,返回long int型。 函数为long int strtol(const char *nptr, char **endptr, int base) base是要转化的数的进制,非法字符会赋值给endp...

2018-09-25 16:25:15

阅读数 40

评论数 0

排序算法

排序算法比较 冒泡排序 选择排序 插入排序 希尔排序 归并排序 堆排序 快速排序 时间(平均) O(n2) O(n2) O(n2) O(n1.3) O(nlogn) O(nlogn) O(nlogn) 时间(最好) O(n) O(n2) O(n) O(n) O(nlogn) ...

2018-09-25 16:24:51

阅读数 25

评论数 0

容器的使用

Top K Frequent Elements 给定一个非空整数数组,返回前K个最频繁的元素 输入:nums = [1, 1, 1, 2, 2, 3],k = 2 输出:[1, 2] /* 思路:遇到这种top k的题目,一般都使用堆这种数据结构,因为堆排序每次只需要输出顶部,输出k次即可。...

2018-09-25 16:18:44

阅读数 50

评论数 0

贪心算法

跳跃游戏 LeetCode 45 给定一个非负矩阵,矩阵中每个位置的数字代表从这个位置最多可以跳的跳数。目标是求出到达最后一个元素的最小跳数。 输入: [2, 3, 1, 1, 4] 输出: 2 解释: 从0位置跳到1位置,再从1位置跳到4位置,一共两跳到达终点。 /* 思路:采用贪心算法,...

2018-09-25 16:17:32

阅读数 37

评论数 0

面试知识点总结——深浅拷贝

区别 在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一对一拷贝(逐位复制),当类中数据成员没有指针时,利用浅拷贝完全没有问题;但当数据成员中有指针时,如果采用简单的浅拷贝,那么两个类中的两个指针将会指向同一块地址,当对象快结束时,会调用两次析构器,从而...

2018-08-09 10:28:54

阅读数 34

评论数 0

面试知识点总结——虚继承

背景: 尽管在派生列表中同一个基类只能出现一次,但实际上派生类可以多次继承同一个类。派生类可以通过它的两个直接基类分别继承同一个间接基类,也可以直接继承某个基类,然后通过另一个基类再一次间接继承该类。 出现的问题: 在默认情况下,派生类中含有继承链上每个类对应的子部分。如果某个类在派生过程中...

2018-08-08 11:27:50

阅读数 70

评论数 0

面试知识点总结——map与unordered_map

比较 运行效率:unordered_map最高,而map效率较低但提供了稳定效率和有序的序列 占用内存:map内存占用略低,unordered_map内存占用略高,而且是线性成比例的 需要无序容器,快速查找删除,不担心略高的内存时用unordered_map; 对有序容器稳定查找删除效率...

2018-08-06 22:02:00

阅读数 322

评论数 0

面试知识点总结——迭代器失效问题

在STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector、deque);另一类是以不连续节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。 list, set, map容器 在使用list、set或map遍历删除...

2018-08-06 15:30:53

阅读数 126

评论数 0

面试知识点总结——操作系统页面置换算法

页面置换算法是在请求分页存储时,调页时候会用到的。页面置换算法的目标是,尽可能减少换入换出次数。常见的页面置换算法有:最优页面置换算法、先进先出算法、最近最久未使用算法(LRU)、时钟页面置换算法、二次机会算法和最不常用算法。我们还会介绍Belady现象。 算法介绍 最优页面置换算法 ...

2018-08-03 10:05:30

阅读数 166

评论数 0

面试知识点总结——排序算法

排序算法比较 冒泡排序 选择排序 插入排序 希尔排序 归并排序 堆排序 快速排序 时间(平均) O(n2) O(n2) O(n2) O(n1.3) O(nlogn) O(nlogn) 时间(最好) O(n) O(...

2018-08-02 10:16:43

阅读数 111

评论数 0

面试知识点总结——构造函数解析

构造函数的作用是在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。一个类可以有多个构造函数,可根据参数个数不同或类型不同来进行构造函数的重载。 默认构造函数 Student(); //没有参数 //如果创建一个类没有写任何构造函...

2018-07-31 10:35:24

阅读数 53

评论数 0

面试知识点总结——字符串操作

本节将对C++中字符串的操作进行整理。 字符串长度 int len = str.length(); len = str.size() 字符串比较 可以直接进行比较 也可以: str1.compare(str2); str1.compare(pos1,len1,str2,pos2...

2018-07-30 17:14:37

阅读数 70

评论数 0

面试知识点总结——STL中map的用法

map属于关联容器,提供一对一的数据处理能力。内部是由红黑树实现的,具有自动排序能力。因此map内部的所有数据是有序的。 1. 插入操作 在map中插入数据有三种方法: 使用数组 用数组方式插入数据 #include<iostream&...

2018-07-27 15:35:50

阅读数 140

评论数 0

面试知识点总结——C++中公有继承、私有继承和保护继承的区别

假设基类是一个快要退休的富豪,代码如下: class RichMan { public: RichMan(); ~RichMan(); int m_company; private: int m_money; int m_car; protected:...

2018-07-24 16:15:07

阅读数 104

评论数 0

面试知识点总结——const和static

const和static关键字的作用可以从两方面回答:一是和类的成员函数或者成员变量相关,二是不属于类的函数或者变量。 const关键字的作用: 想要阻止一个变量被改变,可以使用const关键字。在定义该const关键字时,通常要对它进行初始化 对于指针来说,可以指定指针本身为const,也...

2018-07-24 15:59:28

阅读数 55

评论数 0

面试知识点总结——new/delete和malloc/free的区别

new/delete是C++中的操作符,而malloc/free是函数,他们都是用来进行动态内存管理的,主要区别如下: new申请的空间在堆或静态存储区,而malloc申请的在堆 new在申请空间后会调用构造函数初始化,但是malloc不会;同事delete在释放空间之前要先调用析构函数,而f...

2018-07-24 15:21:56

阅读数 58

评论数 0

面试知识点总结——引用和指针的区别

引用是在C++中才有的,C中没有引用,引用相当于给变量取了一个别名。它和指针的区别如下: 指针是变量的地址,引用是变量的别名 引用必须初始化(不能为空),但是指针可以为空 引用一经初始化就不能再去引用其他变量,但是指针还可以改变 sizeof对指针操作求的是指针指向对象的大小,sizeof对引...

2018-07-24 15:14:12

阅读数 66

评论数 0

面试知识点总结——构造函数私有化或保护化

本节内容将讨论构造函数能否私有化/保护化,构造函数能否继承和重写,能否将构造函数声明为虚函数的问题。 构造函数私有化/保护化 可以将构造函数设置为私有函数,但是这样做就无法从外部直接调用构造函数,因此就无法直接构造这个类的对象。但是为何要将构造函数私有化/保护化呢?如果私有化以后,该如何构造...

2018-07-24 14:58:32

阅读数 44

评论数 0

面试知识点总结——C++中的重载、重写和隐藏

在C++中,经常会遇到函数的重载、重写和隐藏。这三种情况在面试中经常会被问到,因此,我们对这三种情况作出区分。 重载 重载通常发生在相同范围内,如同一个类中。重载有以下特点: 相同范围 函数名相同 参数列表不同 返回类型相同 virtual关键字可有可无 重写 重写通常发生在派生类和基类...

2018-07-24 11:08:38

阅读数 61

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭