分享三道面试的算法题

第一道(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 表示向前开进一个单位的距离,且保持方向不变.

期待输入:

第一行输入车的初始化大小为 X=10,Y=10,N

第二行输入指令 MMLMMR

期待输出:

车的坐标及方位 X=8 , Y=12, N

要求:

1、注意代码的质量

2、不能有重复代码

3、使用面向对象编程

参考:blog.csdn.net/hongmin118/…

其中答案,先自己想一下。我觉得一般人都能使用暴力破解得到最终答案,但是在面试的机试阶段,面试官喜欢那种时间复杂度和空间复杂度都是最小的结果。因为我是普通人,所以先想到的就是先把问题解决了。说不定你比我更聪明,如果最终没有想到答案,可以度娘一下。



原文地址:https://www.cnblogs.com/happyhuangjinjin/p/13797206.html