演算法 移動0到最末尾的位置 python實現

2021-09-17 08:42:42 字數 729 閱讀 1987

今天面試的時候被問到了,很蒙蔽,瞬間想到了幾種方法,但是都不是最優解。回來發現還是自己5個月前做過的題目,真是應該反思一下為什麼想不出來。

問題描述:將陣列中的0移動到陣列的末尾,並且空間複雜度是o(1)。

我瞬間能想到的方法就是利用乙個新的陣列,依次遍歷原陣列,如果為0,則統計0的個數並且跳過這個數,如果不為0,則將該數新增到新陣列中,最後在新陣列後新增0。

如何原地去做呢?其實很簡單,思想上就是利用原陣列來充當上文的新陣列。比如有陣列[0,1,2,3,2,0,0,21,2]。先建立乙個變數 i用於表示非0數字的下標,那麼如果遇到了0,則跳過,如果遇到了非0,則將其放在下標為 i 的位置即可。最後 i 的值就是非0的個數,新增 陣列長度-i個0就可以了。

def

removezero

(nums)

: i =

0for num in nums:

if num !=0:

nums[i]

= num

i+=1for k in

range

(i,len

(nums)

: nums[i]

=0

所以說這道題如果直到答案,算是很簡單的。為什麼我在面試的時候想不到呢?我的固定思維讓我第一時間想到的是交換兩個數,如果想的是交換兩個數字來達到目的,那麼路就走偏了。這種題目在思路上應該想到的是將除0以外的數看做乙個整體,用乙個 i 變數來維護它本來的順序。

需求從0到1

軟體是一種工具,是用來輔助人們解決某些問題的 相關的問題,組成問題領域 因此解決問題是軟體存在的價值,所以軟體的價值是符合某個問題領域的需求,從問題領域出發找構建軟體系統的重要性由此而得。充分了解問題領域,能夠幫助你理解需求 涉眾分析報告 通過以上大類,對專案範圍的社眾進行調查和訪談,書寫成涉眾報告...

《從0到1》雜感

從0到1 最近非常火,到處都在談論這本書。書中討論了很多問題,幾乎涵蓋了乙個初創企業要面對的方方面面。個人印象最深刻的,是書中對 壟斷企業 的描述。彼得.蒂爾給出了壟斷企業的四大特徵 專利技術 網路效應 規模經濟 品牌優勢。專利技術。專利技術是公司的核心優勢,很難被其他公司抄襲,最好領先行業平均水平...

RHCE從0到滿分

第一篇獻給所有想考rhce的小夥伴。希望看了我這篇部落格對大家有所幫助吧。自己也是考慮了很久,要不要花錢報個培訓班來學習rhce,最終也是趕在劉遄老師周年慶典的時候報了第26期課程。考試費用的rhcsa rhce 4200元 rhca 18000,由於 太貴,如果考試的話,對你現在的薪資沒有太大影響...