第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

js,刷leetcode的時候突然腦洞的一個問題

js,刷leetcode的時候突然腦洞的一個問題

UYOU 2018-11-14 13:37:56
當時刷的是一道數(shù)組去重的題題干https://leetcode.com/problems...當時刷的時候也accepted了,但是突然想到了一個問題,到底怎么樣才能在不開新的數(shù)組的情況之下對原數(shù)組完成去重而且返回修改之后的數(shù)組??下面是自己通過的代碼var removeDuplicates = function(nums) {    if(nums === null || nums.length === 0) return 0;    if(nums.length == 1) return 1;    var count = 0;    for(var i = 1 ; i < nums.length ; i++){        if(nums[count] != nums[i]){            count++;            nums[count] = nums[i];        }    }        return ++count;};開始的時候想到的是最后返回nums.length,但是仔細一想,這不是在開玩笑嘛,這樣寫返回的肯定還是原來未經(jīng)改變的nums啊,所以就開始想到底怎么返回這個被修改之后的數(shù)組,但是看了好多的數(shù)組去重的文章,還是沒找到答案,求大佬指導(dǎo)一波?。。?!
查看完整描述

1 回答

?
尚方寶劍之說

TA貢獻1788條經(jīng)驗 獲得超4個贊

就地去重的思路很簡單

  1. 建立一個以每個數(shù)組元素為 key 的 hash 對象

  2. 每個元素通過 hash 判斷其是否已經(jīng)存在與數(shù)組中

  3. 如存在,將該元素刪除

  4. 遍歷完成后,移動數(shù)組元素,填補空位

由于移動數(shù)組元素是一個高耗操作(例如 N 長數(shù)組被均勻挖掉 N/2 個空,那么這時由后往前移動元素的時間復(fù)雜度能到 N^2 的水平),并且這個算法不符合當前的 immutable 趨勢,因此這種做法是吃力不討好的,一般場景下也沒有必要去做。


查看完整回答
反對 回復(fù) 2018-12-19
  • 1 回答
  • 0 關(guān)注
  • 447 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號