分享三道面试的算法题
点击上方「蓝字」关注我们
第一道(B):在北京有N个工区,形成一个环状,Bytebus是往返在各个工区的通勤车,按工区的顺序行驶,其中第 i 个工区有汽油 gas[i] 升。
你有一辆油箱容量无限的的Bytebus,从第 i 个工区开往第 i+1 个工区需要消耗汽油 cost[i] 升。你从其中的一个工区出发,开始时油箱为空。如果你
可以绕环路行驶一周,则返回出发时工区的编号,否则返回 -1。
输入:
gas = [1,2,3,4,5]
cost = [3,4,5,1,2]
输出: 3
第二道:现有1000瓶药,其中999瓶无毒,只有一瓶有毒。已知小白鼠喝了毒药1小时后会死,现给你10只小白鼠,和1个小时的时间,让你找出有毒的那瓶药。说明:每一瓶药的量足够每只小白鼠同时服用,喂药时间可以忽略,小白鼠的胃足够大,可以喝很多瓶。
第三道(T):车可以左转,右转,前移,车的位置由一个x,y系坐标系和一个朝向确定。地理方向的N,S,W,E分别表示上下左右。
示例:位置坐标X=0,Y=0,N。表示车在坐标系的原点,面朝上。
为控制车的动作,需传送一串简单的字母。传送的字母为:L、R 和M。L 和R 分别表示使车向左、向右旋转90度。但不离开它所在地点;M 表示向前开进一个单位的距离,且保持方向不变.
期待输入:
1) 第一行输入车的初始化大小为 X=10,Y=10,N
2) 第二行输入指令 MMLMMR
期待输出:
车的坐标及方位 X=8 , Y=12, N
要求:
1、注意代码的质量
2、不能有重复代码
3、使用面向对象编程
参考:https://blog.csdn.net/hongmin118/article/details/83970825
其中答案,先自己想一下。我觉得一般人都能使用暴力破解得到最终答案,但是在面试的机试阶段,面试官喜欢那种时间复杂度和空间复杂度都是最小的结果。因为我是普通人,所以先想到的就是先把问题解决了。说不定你比我更聪明,如果最终没有想到答案,可以度娘一下。
扫码二维码
获取更多精彩
Java乐园