分享三道面試的算法題

點擊上方「藍字」關注我們

第一道(B):在北京有N個工區(qū),形成一個環(huán)狀,Bytebus是往返在各個工區(qū)的通勤車,按工區(qū)的順序行駛,其中第 i 個工區(qū)有汽油 gas[i] 升。
你有一輛油箱容量無限的的Bytebus,從第 i 個工區(qū)開往第 i+1 個工區(qū)需要消耗汽油 cost[i] 升。你從其中的一個工區(qū)出發(fā),開始時油箱為空。如果你
可以繞環(huán)路行駛一周,則返回出發(fā)時工區(qū)的編號,否則返回 -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樂園

