面试题
simon-zhao
学习、探索
展开
-
C++之STL中sort函数的内部实现(一)
概述STL中提供了一个sort()函数,用于排序。它的实现虽然是基于我们熟悉的quick sort, insertion sort, heap sort,但是内部却庞大复杂。sort()函数只能接受RandomAccessIterators,list slist都不能使用。 STL中的sort()函数在数据量大的时候采用quick sort,分段后的数据量小于某一个门槛时便采用insertion原创 2015-05-20 11:17:58 · 10985 阅读 · 0 评论 -
【面试题】连续子数组的最大和
题目有一个整型数组,里面的元素有正数和负数,一个或者连续的多个元素组成一个子数组,求所有子数组的和的最大值。也就是连续子数组最大和问题。分析这道题一般使用动态规划来做,面试的时候问到也是考察动态规划。f(i)表示以i结尾的子数组的最大和。既然是以i结尾,那从何处开始呢?j在i的左边,如果A[0]到A[j]的和为负,那f(i)应该从j+1开始。那f(i)的递推公式怎么算呢? f(i) = f(i-1原创 2015-10-20 11:04:36 · 1767 阅读 · 0 评论 -
【面试题】在一个含有n个元素的集合中随机取一个数
题目遇到这么一个面试题,题目是在一个含有n个元素的集合中随机取一个元素。关键点是n很大而且不定,所以不能直接生成一个随机数,然后等概率取。解答假设存放n个元素的集合为S0,然后再申请一个空集合S1。然后将S0中的元素一个一个的放入S1中,在这个过程中做如下操作: 1. 将第一个元素i1放入集合S1中,即S1{i1},在S1中随机取一个元素的话只能取i1; 2. 再将元素i2放入集合S1中,即S1原创 2015-08-08 15:55:57 · 4398 阅读 · 0 评论 -
hihocoder Lucky Substrings
题目时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 A string s is LUCKY if and only if the number of different characters in s is a fibonacci number. Given a string consisting of only lower case letters, outp原创 2015-07-05 22:23:36 · 1911 阅读 · 0 评论 -
hihoCoder Magic Box
题目题目1 : Magic Box 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 The circus clown Sunny has a magic box. When the circus is performing, Sunny puts some balls into the box one by one. The balls are in thre原创 2015-07-12 17:59:14 · 1727 阅读 · 0 评论 -
【编程题】01串排序
题目给定一个01串(仅由‘ 0’或‘1’组成的字符串),现在想把这个数字串排序成“非递减”有序序列,请问至少需要多少次交换(任意两个位置交换)? 输入描述: 输入数据第一行是一个正整数T(T<=100),表示有T组测试数据; 接下来的T行,每行给出01串。 数据保证—— 50%的字符串长度在[1,100 ] 95%的字符串长度在[1,10000] 100%的字符串长度在[1,1000原创 2015-06-27 19:38:25 · 4619 阅读 · 0 评论 -
求旋转数组后的最小值
题目一个有序数组,将前面的一段放在数组的后面就被称之为旋转。比如[1,2,3,4,5,6]就可以旋转为[5,6,1,2,3,4]。输入一个旋转后的数组,输出数组中的最小值。思路直接遍历的时间复杂度是O(n)。接下来介绍并实现一个O(log n)的算法。 以[50, 10, 20, 30, 40]为例: 下标:first = 0, last = 4, mid = 2 因为array[mid]原创 2015-05-18 17:42:02 · 1620 阅读 · 0 评论 -
用两个栈实现一个队列
题目使用两个栈模拟实现一个队列的功能。思路栈是“先进后出(FILO)”,队列是“先进先出(FIFO)”。栈的操作见:http://blog.csdn.net/u010902721/article/details/45748547 其中一个栈stack1固定用为push使用,另一个栈stack2固定用作pop使用。当stack2为空的时候,就将stack1中的元素逐个出栈,直接push到stack2原创 2015-05-18 15:57:05 · 1647 阅读 · 0 评论 -
打牌:一群人想打斗地主和升级。已知他们已经1个、2个、3个或者4个人成为一桌了,现在要把他们全部变成3人一桌或者4人一桌,问至少移动几个人?
题目详情一群人想打斗地主和升级。已知他们已经1个、2个、3个或者4个人成为一桌了,现在要把他们全部变成3人一桌或者4人一桌,问至少移动几个人?(要保证所有人都能进行游戏)输入格式:多组数据,每组数据一行,包含4个整数a,b,c,d 0输出格式:至少移动的人数,如果不可能完成,输出-1原创 2014-05-21 18:28:54 · 2689 阅读 · 1 评论 -
用户级线程和内核级线程
用户级线程特点用户级线程仅存在与用户空间;内核并不能感知用户级线程的存在;内核的资源分配仍旧是以进程为单位进行的,用户级线程只能在进程内竞争资源。优点线程切换的时候开销很低。缺点用户线程模型假定线程运行系统最终会重新获得控制权,这可能会受到CPU绑定线程(CPU-bound thread)的阻碍。CPU绑定线程很少执行库函数调用,这样就会阻止线程运行系统重新获得控制权来调度其它的线程。程序员原创 2015-05-27 17:33:08 · 2134 阅读 · 2 评论 -
Java面试-Spring IOC(控制反转)和DI(依赖注入)
IOCIoc(Inversion of Control)翻译成中文就是“控制反转”,一个比较晦涩的词语。如果要真正理解这个词语,必须要用过Spring框架才行,因为Spring开启了一种新的编程方式。传统的编程方式: 所有的对象和资源都是由开发人员来控制,由你来决定什么时候new一个对象,什么时候申请资源、使用资源、释放资源。使用Spring框架: 开发人员提供一个清单给Spring,然后对象的整个原创 2016-10-04 23:18:07 · 7395 阅读 · 0 评论