- 0
- 0
- 约1.71千字
- 约 3页
- 2026-01-31 发布于北京
- 举报
2015唯品会技术岗笔试(含)
2015-08-07
1、现有n个小于100000的整数,写一个算法将这些数从小到大排序,要求时间
复杂度O(n),空间复杂度O(1)。
2、有一个整数数组,请用你熟悉的编程语言写一个算法将这个数组变成奇数在
前偶数在后。并给出你的算法的空间复杂度和时间复杂度。
3、有两个目录a、b的绝对路径(字符串),用你熟悉的语言实现一个算法,求出
b相对于a的相对路径。
4、仓库中有100颗金豆,拣货员在拣货的时候无意中把一颗外观一摸一样但重
量不同的假豆掉了进去。仓库主管发现后给了他一架天平,并说如果他能通过最
多两次称量得出假豆比真豆重还是轻,就不对他进行惩罚。你如果你是拣货员,
你能让自己免于惩罚吗?
网友A:个人想法,有错请。
第一题:快排。
第二题:从中间开始往两边扫描。
第三题:个人觉得应该是字符串匹配算法。
第四题:不会,以前见过多种类似的题,但是忘了。
网友B:
1、快排的时间复杂度是nlog2(n),我觉得题目可能记得有问题。
2、从中间肯定不对,应该和快排一样,从两边往中间扫。
3、类似于最小父节点的查找,但更简单,因为A和B的深度是已知的。可以直
接看A和B开头目录有多少一样的。然后再在B到父节点的相对深度前加一堆
上线目录(../)。
4、第一次:1-33VS34-66
1.1平1-35VS67-101--〉67-101的轻重,
就是假球的轻重
1.2左重1-33VS67-99--〉左重:则假重;
左轻,则假轻:平,则假轻
1.3右重同理1.2
网友C:
第一题没研究
第二题
privatestaticvoidcata(int[]s,int[]r)
{if(s.length!=r.length){
thrownewRuntimeException();
}
intjxIdx=0;
intoxIdx=0;
for(inti=0;is.length;i++)
{if(s[i]%2!=0){
r[jxIdx++]=s[i];
}else{
r[s.length-(++oxIdx)]=s[i];
}
}
}
第三题
privatestaticStringgetPath(StringfPath,StringsPath){
Stringret=;
Stringfs[]=fPath.split(\\\\);
Stringss[]=sPath.split(\\\\);
intidx=getSameFolderIdx(fs,ss);
for(inti=idx;iss.length;i++)
{ret+=../;
}
for(inti=idx;ifs.length;i++)
{ret+=fs[i]+/;
}
returnret;
}
privatestaticintgetSameFolderIdx(Stringfs[],Stringss[])
{inti=0;
for(;ifs.length;i++){
if(i==ss.length||!fs[i].equals(ss[i]))
{break;
}
}
returni;
}
于CSDN
原创力文档

文档评论(0)