bat面試問了乙個資料結構問題,求教!

時間 2021-06-02 19:32:03

1樓:趙磊

我覺得吧,既然面試官引導你對vector進行優化,那他肯定是自己心裡大致有乙個方案了,這個無法優化聽起來顯然是無法接受了。

為什麼不想個折中點的辦法呢?

vector的插入效率不太高,主要原因在於當陣列規模擴大的時候每超過一定數量就會重新申請記憶體,那麼為什麼不能把它設計成分塊的呢?做成乙個鍊錶,鍊錶的每個節點都是乙個陣列,只要有適當的策略控制鍊錶結點的規模,插入效率就會有很大提公升。(這個東西叫塊狀鍊錶,但是儲存資料的仍然是陣列,隨機訪問的效率比純鍊錶要高)

再有,既然stl是c++的庫,那為什麼不能用一些記憶體操作上的黑科技呢,就算說不太清楚,至少也是提供了乙個非常可行的方向。

方法總是有很多的,別急著否定可能性嘛。

2樓:doing

你被拒並不見得是因為這個原因,更大可能是綜合考量的結果。當然,就這個問題來說,你的確表現的不夠好。

陣列插入也不見得不能優化啊,如果是非class型別的,memmove速度就能快點。當然用C11的rvalue ref & move也有用。

總的來說,要展現你的能力。如果表現出來的都是普通人都明白的東西,你獲得的自然就是普通人的待遇。

有關 Objective C 中乙個資料結構的問題,為什麼 NSArray 和 NSDictionary 都被設計成只能存放物件(不能存放基本型別,如 int)?

因為NSArray中儲存的是指標,並且通過在加入到容器中的時候retain來保證指標的有效性。OC的堆上儲存是基於引用計數的,而原始資料型別的操作方式和OC型別是不同的 不需要retain 個人認為cocoa設計時為了效率 不需要判斷加入容器中的元素的型別 也為了抽象的一致性 即引用計數操作 而沒有...

沒學過資料結構與演算法遇到乙個演算法,想了很久沒想出來,希望有大神能解答?

弗雷德裡希大王 謝 渡邊早季.meta 邀,花了幾分鐘想了乙個取巧的辦法 def guess litsA,limit,count 5 z str i if i limit else str for i in litsA return i for i in join z split if len i ...

乙個計算機專業的學生資料結構這門課學到什麼程度才能算學的還不錯?

了解常用的資料結構的具體實現和特點。能夠根據需求選擇適合的資料結構。能夠根據需求定義自己的抽象資料結構,給出合適的實現。 資料結構 這門課!是在我的大學生涯裡唯一乙個將我GPA拉低超過0.5的乙個學科!後來我對資料結構耿耿於懷,嚴蔚敏老師和周桂紅老師的教材都翻了無數遍,總結出一點吧,資料結構還想要學...