- 博客(9)
- 资源 (6)
- 收藏
- 关注
原创 美团面试题:寻找数组置尾操作的最小值
题目:一个递增的整形数组,现在的操作是每次从数组的开头取出一个元素放在数组的末尾,连续n次这样的操作后得到一个新的数组,现在把这个数组给你,请求出最少移动的次数。解析:1 最容易想到的方法就是依次遍历这个数组,找到最小值的位置,这样的时间复杂度就是O(n)。2 考虑到事先是排好序的,所以我们可以使用二分查找法来实现这个操作,只不过是这个二分查找法是传统二分查找法的变种。
2014-10-27 18:43:50 1332
原创 二叉树的层次遍历
问题:如何实现二叉树的层次遍历?解析:我们可以使用队列来解决这个问题将根节点压入队列判断队列是否为空不为空则获取队列最前端的元素,打印出该元素将该元素移除队列如果该元素有左孩子,则将其左孩子进入队列如果该元素有右孩子,则将其右孩子进入队列主要函数如下所示:template void BSTrees::traverseLevel(Node* root){
2014-10-27 15:05:01 1193
原创 去哪儿网的一道面试题:找出字符串出现最多的字符
问题:给定一个字符串,要求把字符串中出现次数最多的字符打印出来。分析:不置可否,肯定要统计每个字符出现的次数,然后根据字符出现次数的大小打印出出现次数最多的字符,另外需要注意的是出现次数最多的字符个数可能不止一个。解决方案:1 最容易想到的就是建立一个map,字符作为key,初始化次数cnt为0,每次遍历数组中的一个元素的时候,如果能在map中查到该字符,那么该map元素的cn
2014-10-27 13:18:01 1446
原创 链表的倒序输出
链表的倒序输出,我们可能想到的方法就是把链表翻转后然后再遍历一遍,这样的话时间复杂度是O(n),但是缺点是代码稍微复杂。或者是开辟一个数组,顺序遍历一个链表把元素复制到数组里面,最后再把数组倒序输出。其实这道题目时间复杂度都不可能低于O(n),但是考虑用栈的话代码就可能非常简单,代码如下所示:#include using namespace std;struct Node{ int
2014-10-27 00:39:50 2422
原创 找出数组中出现仅一次的数字
有一个元素类型是整数的数组,数组中有一个数字仅仅出现了一次,其它都出现了两次,现在请把这个仅仅出现一个找出来。分析:1.1 首先想到的是排序,这样的时间复杂度是O(n*logn) + O(n),这样的速度的确不咋地;1.2 最好的方法不是自己想出的,在网上找到的,是利用位运算的性质,两个相同的数字异或运算的结果是0,0和任何整数的异或运算是其本身,这两点足以,所以我们只需要遍历一边
2014-10-26 22:59:58 1086 1
原创 mysql忘记密码
有时候突然忘记MySQL的密码会真的不爽,这里介绍一种MySQL密码忘记时重置密码的方法,操作系统win8,MySql version:5.6.101 在任务管理器里面关闭掉mysql.exe,mysqld.exe进程;2 在MySQL安装的文件夹里面打开cmd窗口(shift+右键)输入mysqld –skip-grant-tables,如下所示:它大概意思就是跳过授权表
2014-10-17 13:12:52 1421
原创 scanf,printf函数细节
今天笔试的时候遇到一个考察C语言scanf函数的题目int x;float y;scanf("%3d%f",&x,&y);// input 123456 678 enter and then what's the value of x and yprintf("%d %f",x,y);程序的执行结果是:123 456.0000000看来还是自己对scanf函数不是很了解,现在看
2014-10-17 00:43:49 1320
Win32对话框编程
2014-04-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人