面试题
摩天轮的思念
这个作者很懒,什么都没留下…
展开
-
寻找和为定值的数
寻找和为定值的两个数://寻找和为定值的两个数 #include <iostream> using namespace std; #include <list> 排序夹逼 时间复杂度为O(nlogn+n) = O(nlogn),空间复杂度:O(1) void TwoSum(int a[], unsigned int length, int sum) { }原创 2017-05-11 07:28:39 · 574 阅读 · 0 评论 -
寻找最小的K个数
解法一:排序法://解法一:全部排序 //时间复杂度:O(n*n); #include <iostream> using namespace std;template<class T> void Sort(T array[], size_t size, int k) { for (int i = 0; i < size; i++) { for (int j =原创 2017-05-10 22:01:15 · 322 阅读 · 0 评论 -
数据结构基础--单链表
(1)单链表的建立、测长、打印 (2)单链表删除节点 (3)单链表的插入 (4)单链表的排序 (5)单链表的逆置原创 2017-05-03 22:49:06 · 2200 阅读 · 0 评论 -
二叉树面试题汇总
二叉树节点定义如下:struct BinaryTreeNode { BinaryTreeNode(const T& data) : _data(data) , _pLeft(NULL) , _pRight(NULL) {} T _data; BinaryTreeNode<T>* _pLeft; // 左孩子原创 2017-05-12 22:49:02 · 334 阅读 · 0 评论 -
最大连续子数组和
题目描述:给定一个数组,数组里可能有正数,负数,0,数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个一个和。求所有子数组和的最大值。例如,如果输入数组为,和的最大子数组为{1,-2,3,10,-4,7,2,-5},那么输出为该子数组的和18 解法一:蛮力枚举法(时间复杂度:O(N*N*N))用三个for循环三层遍历,求出数组中每一个子数组的和,最终求出这些子数组和中最大的一个值。原创 2017-05-18 19:57:27 · 465 阅读 · 0 评论 -
奇偶数排序
题目描述:给定一个整数数组,请调整数组的顺序,使得所有奇数位于数组前半部分,所有偶数位于数组后半部分, 要求时间复杂度为O(n).分析与解法: 最容易想到的办法是从头到尾扫描这个数组,每遇到一个偶数,就把他单独取出来,然后把该偶数后面的所有数往前移动一位,最后把该偶数放入数组的最末尾。因为每遇到一个偶数,需要移动O(N)个数,所以时间复杂故为O(N*N),不符合题目要求。原创 2017-05-19 22:46:38 · 5485 阅读 · 0 评论 -
荷兰国旗
题目描述:现有n个红白蓝三种不同颜色的小球,乱序排在一起,请通过两两交换任意两个球,使得从左至右的球依次为红球白球蓝球。这个问题之所以叫荷兰国旗,是因为将红白蓝三色小球弄成条状物,并有序的排列后正好组成荷兰的国旗(图中球上标数字0的表示红球,1表示白球,2表示蓝球)解法:需要三个指针,一个前指针begin,一个中指针current,一个后指针end,current指针原创 2017-05-20 23:31:51 · 491 阅读 · 0 评论 -
队列和栈
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。原创 2017-06-10 15:45:47 · 311 阅读 · 0 评论