[No000096]程序员面试题集【上】
2016-05-20 19:52
477 查看
对几家的面试题凭记忆做个总结,基本全部拿到offer,由于时间比较长,题目只写大体意思,然后给出自己当时的答案(不保证一定正确):
abstract类不可以被实例化
蛋糕算法: 平面分割空间:(n-1)n(n+1)/6+n+1切后:2^n
直线分割平面:n(n+1)/2+1
平面分割和空间分割的相关公式ACM & 算法 n条直线分割平面问题的公式推导:
设n条直线将平面分成Kn个部分,
当n=1时,K1=2;当n=2时,K2=4;当n=3时,K3=7;
当n=4时,K4=11;……K(n)= K(n-1) n, K(n)=1+n*(n+1)/2.
那n=1,2,3,4,5,6,7,8,9,
2,4,7,11,...
2 2,4 3,7 4,11 5 ...
1 1 2 3 4 5 6 7 ...
n=2 2 3 4 5 6 7 8 ... n=1 1 2 3 ... n=1 (n 1)*n/2(部分)
所以Kn=1+(n+1)*n/2(部分)
n条直线分割平面数:1+(n+1)*n/2
HDOJ 2050
n条折线分割平面数:2*n*n-n+1
n条折线可以看做是2n条直线分割平面,然后减去多余的区域
2n条直线分割平面的区域数就是n(2n+1)+1=2n^2+n+1
多余的区域是2n个,于是有效区域数就是2n^2-n+1个
n条闭合曲线分割平面 1 n=1;
f(n) = f(n-1)+2(n-1) 其他n;
n条闭合曲线分割平面数:fn(n)=n^2-n+2;
平面最大化分割空间
递归关系f(n)=f(n-1)+n(n-1)/2+1
f(n)=(n^3+5n)/6+1
设n-1个平面已经最大化分割了某固定空间
则第n个平面要最大分割空间的话就要与所有平面都有交线
从第n个平面看,和n-1个平面相交的话,等同于第n个平面被n-1条直线最大化分割,数量为s
从空间上看,就是把空间多划分出来了s个子空间
于是递归关系就是f(n)=f(n-1)+s
而平面被n条直线最大化分割的公式就是s=n(n+1)/2+1
那么
f(n)
=n(n-1)/2+f(n-1)+1
=n(n-1)/2+(n-1)(n-2)/2+f(n-2)+2
=[n(n-1)+(n-1)(n-2)+(n-2)(n-3)+...+3*2+2*1]/2+f(1)+(n-1)
=[1*2+2*3+3*4+...+(n-3)(n-2)+(n-2)(n-1)+(n-1)n]/2+f(1)
={[1+2+3+4+...+(n-3)+(n-2)+(n-1)]+[1+2*2+3*3+4*4+...+(n-2)(n-2)+(n-1)(n-1)]}/2+(n-1)+f(1)
=[n(n-1)/2+(n-1)n(2n-1)/6]/2+(n-1)+f(1)
=[n(n-1)3/6+n(n-1)(2n-1)/6]/2+(n-1)+f(1)
=n(n-1)(n+1)/6+(n-1)+f(1)
=n(n^2-1)/6+n+1
=(n^3+5n)/6+1
4.不用if判定条件:
string[] res = {"优","优","良","良","中","中","差","差","差","差"};
return res[10-int];
5.sql建表查询:
create database [databaseTest]
go
USE [databaseTest]
GO
CREATE TABLE [dbo].(values('01','大王')values('02','小王')values('03','张三')values('04','李四')values('05','王五')values('06','大王')values('07','大王')values('08','小王')USE [databaseTest](--Table是关键字values('2013-10-28','胜')values('2013-10-28','负')values('2013-10-28','胜')values('2013-10-28','负')values('2013-10-29','胜')values('2013-10-29','负')values('2013-10-29','负')values('2013-10-29','负')--建立建立登陆用户.sqlwhere 胜负 = '负'group by 日期)--where 胜负 = '胜'group by 日期
abstract类不可以被实例化
蛋糕算法: 平面分割空间:(n-1)n(n+1)/6+n+1切后:2^n
直线分割平面:n(n+1)/2+1
平面分割和空间分割的相关公式ACM & 算法 n条直线分割平面问题的公式推导:
设n条直线将平面分成Kn个部分,
当n=1时,K1=2;当n=2时,K2=4;当n=3时,K3=7;
当n=4时,K4=11;……K(n)= K(n-1) n, K(n)=1+n*(n+1)/2.
那n=1,2,3,4,5,6,7,8,9,
2,4,7,11,...
2 2,4 3,7 4,11 5 ...
1 1 2 3 4 5 6 7 ...
n=2 2 3 4 5 6 7 8 ... n=1 1 2 3 ... n=1 (n 1)*n/2(部分)
所以Kn=1+(n+1)*n/2(部分)
n条直线分割平面数:1+(n+1)*n/2
HDOJ 2050
n条折线分割平面数:2*n*n-n+1
n条折线可以看做是2n条直线分割平面,然后减去多余的区域
2n条直线分割平面的区域数就是n(2n+1)+1=2n^2+n+1
多余的区域是2n个,于是有效区域数就是2n^2-n+1个
n条闭合曲线分割平面 1 n=1;
f(n) = f(n-1)+2(n-1) 其他n;
n条闭合曲线分割平面数:fn(n)=n^2-n+2;
平面最大化分割空间
递归关系f(n)=f(n-1)+n(n-1)/2+1
f(n)=(n^3+5n)/6+1
设n-1个平面已经最大化分割了某固定空间
则第n个平面要最大分割空间的话就要与所有平面都有交线
从第n个平面看,和n-1个平面相交的话,等同于第n个平面被n-1条直线最大化分割,数量为s
从空间上看,就是把空间多划分出来了s个子空间
于是递归关系就是f(n)=f(n-1)+s
而平面被n条直线最大化分割的公式就是s=n(n+1)/2+1
那么
f(n)
=n(n-1)/2+f(n-1)+1
=n(n-1)/2+(n-1)(n-2)/2+f(n-2)+2
=[n(n-1)+(n-1)(n-2)+(n-2)(n-3)+...+3*2+2*1]/2+f(1)+(n-1)
=[1*2+2*3+3*4+...+(n-3)(n-2)+(n-2)(n-1)+(n-1)n]/2+f(1)
={[1+2+3+4+...+(n-3)+(n-2)+(n-1)]+[1+2*2+3*3+4*4+...+(n-2)(n-2)+(n-1)(n-1)]}/2+(n-1)+f(1)
=[n(n-1)/2+(n-1)n(2n-1)/6]/2+(n-1)+f(1)
=[n(n-1)3/6+n(n-1)(2n-1)/6]/2+(n-1)+f(1)
=n(n-1)(n+1)/6+(n-1)+f(1)
=n(n^2-1)/6+n+1
=(n^3+5n)/6+1
4.不用if判定条件:
string[] res = {"优","优","良","良","中","中","差","差","差","差"};
return res[10-int];
5.sql建表查询:
create database [databaseTest]
go
USE [databaseTest]
GO
CREATE TABLE [dbo].