亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教下該從數組中刪除重復的元素,并考慮算法的執行效率?

請教下該從數組中刪除重復的元素,并考慮算法的執行效率?

揚帆大魚 2022-09-17 15:15:07
寫一個函數來從數組中刪除重復的對象。維持秩序。例如,如果輸入的數組[ 1,5,4,2,7,2,6,5 ],結果應該是[ 1,5,4,2,7,6 ]。實施時應執行速度的優化。
查看完整描述

2 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

最快的算法肯定是O(n)
具體做法是:
1,準備一個HashMap或者HashTable
2,循環你的輸入數組,判斷他是否在HashMap中,如果不是,輸出,并且加入到HashMap中(比如:Map.put(1,true)),如果是在HashMap中則什么都不做。
因為HashMap的讀取和設置是O(1)的時間復雜度,所以加上循環整體的時間復雜度也是O(n)

查看完整回答
反對 回復 2022-09-21
?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

難點
1)數組,如果是鏈表可能會比較容易些:也就是移走重復的后,不能留下空洞
2)去重:應該是只需要掃描數組一遍,否則性能不太好.
3)排序的穩定,也就是順序保持不變.
方案:
使用Bitmap來依次檢查重復
         如果重復, 則后面所有的數組節點往前移一個位置. 具體的代碼可以參考ArrayList.remove()
         如果沒有重復,遍歷數組下一節點
評價:
只需要引入一個Bitmap,內存消耗非常小
檢索去重,性能很快,只需要一次運算即可
不需要使用一個新的數組來對考

查看完整回答
反對 回復 2022-09-21
  • 2 回答
  • 0 關注
  • 139 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號