1樓:
1 給乙個陣列,有100個數,數字,是0到50的
找出,出現次數,前3的數字,和他們出現次數
2 給乙個陣列,有100個數,數字,是-10到10的
找出,從乙個索引下標,到另外乙個索引下標之間,元素合的最大值,並且說出索引位置
3 遞迴方法寫斐波那契數列,要求,速度,越快越好,所求數量長度,從100到100W,隨機值
4 回環列印數字
5 手動實現內建方法eval,輸入乙個數字計算公式,實現計算
難度逐步提公升
1是只加減法利潤 5 +5 +10 -2
2是有加減乘除 5+6*5-2/3
3是帶小括號 5*(6+5)-20 * 3
如果是面的基礎崗位,一般是這些
一般考察的,是python特性和基礎邏輯關係
第一題目
l為原始列表
l=[1,2,3,4,5,....]
data=( (x,l.count(x)) for x in set(l) )
sorted(data,key=lambda x:x[1],reverse=True)[:3]
先形成乙個陣列,前面是去重的元素,後面是元素出現次數
然後,在根據出現次數排序,取前3位。。。。。。
這個答案,是看python基礎特性的,但並不是最好的解決方法,本身也很多問題
1 演算法複雜度太高
每次用 l.count相當於遍歷一次列表
而本身,可以用一次for迴圈,遍歷一次,就OK的
2 思維不嚴謹
如果前3名,是出現了3次,但其實一共有5個數都出現了3次呢?
上班了,有時間在更新(這些題一般只是做爬蟲和web開發的基礎題,演算法的肯定不考這個。。。。)
2樓:A.Star
面試常考的,當然是排序。
不用list自帶的sort或者sorted, 要求寫一段排序。
一般的程式設計師搞氣泡排序寫出來,就已經很不錯了。
好一點的程式設計師可以手寫快速排序。
寫選擇排序的也有但不多,寫堆排、希爾、基數、計數的基本沒有。
我目前為止聽到的答案裡面,我認為最優秀的是--如果小於8個用插入排序,多於8個但是資料量不是太大,用快速排序。資料量再大,把任務分給子執行緒,每乙個任務用插入優化過的快排,最後用歸併排序合併。
嗯,確實厲害。
有必要學好資料結構和演算法嗎?
一定要學,學得多好因人而異。雖然現在有好多複雜的演算法有各種各樣的庫為你提供解決方案。你可以不需要會寫這些複雜的演算法。但是,如果你不知道這些演算法的基本原理,時空複雜度,你又如何知道該選哪個演算法呢?呼叫了這些函式後,你又如何去估計整個方法的時空複雜度呢? 有一定必要。資料結構和演算法實際上也是技...
前端開發是否有必要知道資料結構和演算法?
說複雜點,資料結構是用來重構系統的,前端沒有複雜到這種程度,而且實際開發中有幾個人合作,這會給交流帶來困難 演算法就寬泛一點,其實就是流程,也就不限於書上那幾種。演算法是跟開銷和效率掛鉤的,實際工作中如果有必要考慮這些,自然會有改進 一切都看實際情況,如果連整個開發流程都不清楚的,談這些還太過遙遠 ...
需不需要選資料結構和演算法的課程?
創業GO 做IT最後的發展瓶頸就是演算法,所以這兩門是很有必要要學習,而且一定要學好。現在很多人做開發,都是基於上層一些簡單的頁面開發,這樣的開發是很容易吃青春飯的。 網路工程是網際網路方向?不過如果你想走機器學習和大資料方向的話,資料結構以及演算法應該說是必修了吧。自學很有侷限性,入門的演算法如 ...