昨天一朋友找工作, 碰到兩道演算法筆試題, 都是當於鍊錶操作的.
原題具體的還原不過來了, 不過大致是:
1. 有一單鏈表, 找出最後第m個節點.
昨天看到問題時,想到了小學應用題:
汽車過山洞, 假如這個汽車開著開著, 等到車頭剛要出山洞, 車尾離山洞出口也有一段距離嘛...
這樣, 這個題方法出來了
cpp **
node* findlastnode(node* root, int m)
// 此時
// |---------------------| 這個是山洞
// >-------->
// 一起前進吧
while (head->next)
// 此時
// |---------------------| 這個是山洞
// >-------->
return tail;
} 當然,特殊情況要考慮, 不過那....
2. 有一單鏈表, 判斷是否存在環
有環? 走著走著, 卻突然發現, 怎麼也走不完, 可是這要走到什麼時候? 此法不通
可是怎麼也想不出好辦法. 只有乙個笨方法:
看看現在走的路, 是不是已走過...
cpp **
bool hascircle(node* root)
} cur = cur->next;
} return
false;
} 對於2, 不知道有沒有更好的辦法?
C 兩道筆試題
現給定乙個含有n個元素的陣列,請隨機獲取其中的m個元素 不能重複獲取 include include using namespace std void grial int a,int n,int x for i 0 i k i int main grial a,sizeof a sizeof int...
求教兩道演算法筆試題
最近在找工作,有把題目直接發到郵箱裡的,本人水平有限,貼出來大家幫忙看下!1 設計乙個遍歷演算法,按照方格的標號進行順序遍歷,要求一次遍歷完成所有標號方格的順序遍歷 114 2731 3539 6372 8186 9196 98100 102104 159168215 2832 3640 6473 ...
兩道筆試題的感觸
今天做了兩道筆試題,收益良多。有些題,你會發現,雖然並不難,但是卻很容易沒有思路或者出錯,這都是源自平時的不求甚解。很多知識點,自以為已經掌握,其實只是管中窺豹,可見一斑。不要一味墨守成規,也要用於思考,很多東西既要知其然,也要知其所以然。我一直覺得了解和精通中間差著十萬八千里,看來還有很長一段路要...