LeetCode [448. Find All Numbers Disappeared in an Array] 難度[easy]

題目

Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.

Find all the elements of [1, n] inclusive that do not appear in this array.

Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.

Example:

Input:
[4,3,2,7,8,2,3,1]

Output:
[5,6]


解題思路

題目大意如下:給定一個(gè)整型數(shù)組屯碴,數(shù)組元素的大小都在 1 到 n 之間,其中 n 為數(shù)組大小。元素可能出現(xiàn)一次或者兩次凡人,現(xiàn)在希望你能找出不屬于該數(shù)組蓝撇,但大小為[1,n]的元素,要求你的算法不需要使用額外的空間檐盟,并且時(shí)間復(fù)雜度為 O(n) 梯投。

題目的難點(diǎn)主要在于限定你設(shè)計(jì)的算法空間復(fù)雜度為 O(1), 時(shí)間復(fù)雜度為 O(n)沟涨。一開(kāi)始自己直觀的想法就是先建立一個(gè)大小為 n 的布爾型數(shù)組恤批,初始化為false,然后遍歷一遍輸入數(shù)組裹赴,將出現(xiàn)的元素對(duì)應(yīng)的布爾值修改為true喜庞,最后只需再遍歷一遍布爾型數(shù)組,布爾值為false的數(shù)組下標(biāo)即為體重所求元素棋返。雖然該算法的時(shí)間復(fù)雜度為 O(n)延都, 但空間復(fù)雜度也為 O(n), 顯然不滿足題意睛竣。

于是改變思路晰房,既然不能使用額外空間,而且不可能只遍歷一遍就可得到答案(至少需要兩次循環(huán)射沟,每次循環(huán)都能得到一定量的信息)殊者,那么原數(shù)組肯定需要發(fā)生一些改變來(lái)存儲(chǔ)第一次遍歷后得到的信息。沿著這個(gè)思路验夯,不難想出正確的算法猖吴,其中之一,如下所述:第一次循環(huán)將數(shù)組中元素作為下標(biāo)對(duì)應(yīng)的元素值變?yōu)樨?fù)數(shù)簿姨,第二次循環(huán)判斷元素值是否大于 0 距误, 大于 0 的話,說(shuō)明其下標(biāo)即為缺失值(在第一次循環(huán)中已經(jīng)將出現(xiàn)過(guò)元素作為下標(biāo)對(duì)應(yīng)的元素值變?yōu)樨?fù)數(shù)了扁位,好像有點(diǎn)繞口 ORZ 准潭,待會(huì)看看代碼就應(yīng)該很好理解了)。該算法空間復(fù)雜度為 O(1)域仇, 時(shí)間復(fù)雜度為 O(n)刑然, 滿足題意。


參考代碼

class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) {
        int len = nums.size();
        for(int i=0; i<len; i++) {
            int m = abs(nums[i])-1; // index start from 0
            nums[m] = nums[m]>0 ? -nums[m] : nums[m];
        }
        vector<int> res;
        for(int i = 0; i<len; i++) {
            if(nums[i] > 0) res.push_back(i+1);
        }
        return res;
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末暇务,一起剝皮案震驚了整個(gè)濱河市泼掠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垦细,老刑警劉巖择镇,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異括改,居然都是意外死亡腻豌,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吝梅,“玉大人虱疏,你說(shuō)我怎么就攤上這事∷招” “怎么了做瞪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)右冻。 經(jīng)常有香客問(wèn)我装蓬,道長(zhǎng),這世上最難降的妖魔是什么国旷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任矛物,我火速辦了婚禮,結(jié)果婚禮上跪但,老公的妹妹穿的比我還像新娘履羞。我一直安慰自己,他們只是感情好屡久,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布忆首。 她就那樣靜靜地躺著,像睡著了一般被环。 火紅的嫁衣襯著肌膚如雪糙及。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,198評(píng)論 1 299
  • 那天筛欢,我揣著相機(jī)與錄音浸锨,去河邊找鬼。 笑死版姑,一個(gè)胖子當(dāng)著我的面吹牛柱搜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剥险,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼聪蘸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了表制?” 一聲冷哼從身側(cè)響起健爬,我...
    開(kāi)封第一講書(shū)人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎么介,沒(méi)想到半個(gè)月后娜遵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡壤短,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年魔熏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了衷咽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸽扁。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蒜绽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出桶现,到底是詐尸還是另有隱情躲雅,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布骡和,位于F島的核電站相赁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏慰于。R本人自食惡果不足惜钮科,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望婆赠。 院中可真熱鬧绵脯,春花似錦、人聲如沸休里。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)妙黍。三九已至悴侵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拭嫁,已是汗流浹背可免。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留做粤,地道東北人浇借。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像驮宴,于是被迫代替她去往敵國(guó)和親逮刨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容