Java 岗开发 3 年,公司临时抽查算法,离职后这几题我记一辈子
我:“你们难道没有听到要测试吗?”
...
后来,我们就不明不白的进行了一场测试,当我一片空白的试卷交上去,把一片空白的脑子带出来,听着同事们谈论着测试答案。
同事告诉我,这份算法题来自百度,并给了我一份文件。
文件具体内容如下:
1、度度熊想去商场买一顶帽子,商场里有 N 顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少?
输入描述:
首先输入一个正整数 N(N <= 50),接下来输入 N 个数表示每顶帽子的价格(价格均是正整数,且小于等于 1000)
输出描述:
如果存在第三便宜的帽子,请输出这个价格是多少,否则输出-1
输入例子 1:
10
10 10 10 10 20 20 30 30 40 40
输出例子 1:
30
解答:
/*简单,时间复杂度也低*/ #
include < iostream > using namespace std;
int main()
{
int n, t = 0, syn = 0;
int price[1000] = {
0
};
cin >> n;
while(n--)
{
cin >> t;
price[t] = 1;
}
t = 0;
for(int i = 0; i < 1000; i++)
{
if(price[t] && syn < 3) syn++;
if(syn == 3) break;
t++;
}
syn == 3 ? cout << t : cout << -1;
}
</pre>
2、一个数轴上共有 N 个点,第一个点的坐标是度度熊现在位置,第 N-1 个点是度度熊的家。现在他需要依次的从 0 号坐标走到 N-1 号坐标。
但是除了 0 号坐标和 N-1 号坐标,他可以在其余的 N-2 个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离?
Java 开源项目【ali1024.coding.net/public/P7/Java/git】 解答:
从 N-2 个坐标中选出一个点,并直接将这个点忽略掉。直接忽略一个点只会直接影响到,这个节点前后节点的距离。这个 影响的距离我们暂且命名为优化距离,将所有节点按顺序组成三个节点的集合,通过这种方式只需要通过一次循环便能得到结果。
优化距离越大说明如果去掉这个集合的中点元素将会使得总距离越短,下面上代码。
import
java.util.
Scanner;
publicclass
5 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 . Main
{
publicstaticvoid
main(String[] args)
{
Scanner
scanner = new
Scanner(System.in);
int
length = scanner.nextInt();
int[] arrays = newint[length];
for(int i = 0; i < length; i++)
{
arrays[i] = scanner.nextInt();
}
/**
* sum 总距离
* repetition 三个节点 中被重复计算的总距离
* select 优化距离最大的 三个节点两两相加的距离
* add 三个结尾距离为 max 中 头尾节点的距离
* last 最后三个节点中 尾距离没有被计算两次 需要加上
* optimizeDistance 优化距离
*/
int
sum = 0,
int
repetition = 0,
intselect = 0,
int
add = 0,
intlast = 0,
总结
这份面试题几乎包含了他在一年内遇到的所有面试题以及答案,甚至包括面试中的细节对话以及语录,可谓是细节到极致,甚至简历优化和怎么投简历更容易得到面试机会也包括在内!也包括教你怎么去获得一些大厂,比如阿里,腾讯的内推名额!
某位名人说过成功是靠 99%的汗水和 1%的机遇得到的,而你想获得那 1%的机遇你首先就得付出 99%的汗水!你只有朝着你的目标一步一步坚持不懈的走下去你才能有机会获得成功!
成功只会留给那些有准备的人!
评论