First Missing Positive

First Missing Positive


首先悼沿,實(shí)在受不了微信公眾號(hào)后臺(tái)對(duì)markdown的支持潘鲫,查找了很多關(guān)于微信公眾號(hào)排版的文章捺疼,包括池建強(qiáng)老師在知乎上地回答窃植,池老師說微信后臺(tái)對(duì)于代碼的支持很差,真是深有體會(huì)悯森。

從這篇文章開始宋舷,在文章中只提供文章題目的引用描述,題解移動(dòng)到查看原文中瓢姻,請(qǐng)各位見諒祝蝠。

今天是一道在LeetCode上標(biāo)記為Hard的題目,Acceptance為22.9%的題目,雖然知道思路之后會(huì)發(fā)現(xiàn)其實(shí)較為簡(jiǎn)單绎狭。

題目如下:


Given an unsorted integer array, find the first missing positive integer.
For example,Given[1,2,0]return 3,
and[3,4,-1,1] return 2.
Your algorithm should run in O(n) time and uses constant space.


其實(shí)细溅,如果題目中不限制constant space,可以很容易解決這個(gè)問題儡嘶,只要使用一個(gè)HashMap<Integer, Boolean>記錄每一個(gè)數(shù)字是否出現(xiàn)過喇聊,然后從1開始,用HashMap.get(Integer)蹦狂,當(dāng)獲得的值是null時(shí)誓篱,就是我們要找的值。

但是題目中限制了必須使用constant space凯楔,就不能采用這種方法窜骄,那么應(yīng)該怎么做呢。

思路如下:

數(shù)組本身也可以作為一個(gè)map使用摆屯,即以數(shù)組的下標(biāo)為鍵邻遏,以該下標(biāo)的值為map的值,這樣就可以把數(shù)組當(dāng)做是map來看虐骑。代碼如下:

C++版


class Solution
{
public:
    int firstMissingPositive(int A[], int n)
    {
        for(int i = 0; i < n; ++ i)
            while(A[i] > 0 && A[i] <= n && A[A[i] - 1] != A[i])
                swap(A[i], A[A[i] - 1]);

        for(int i = 0; i < n; ++ i)
            if(A[i] != i + 1)
                return i + 1;

        return n + 1;
    }
};

java


public class Solution {
    public int firstMissingPositive(int[] nums) {
        for(int i = 0; i < nums.length; i++){
            if(nums[i] != i + 1){
                int num = nums[i];
                while(num < nums.length + 1 && num > 0 && nums[num - 1] != num){
                    int temp = nums[num - 1];
                    nums[num - 1] = num;
                    num = temp;
                }
            }
        }
        
        for(int i = 0; i < nums.length; i++){
            if(nums[i] != i + 1)
                return i + 1;
        }
        return nums.length + 1;
    }
}

如果覺得文章有幫助的話准验,不妨關(guān)注一下本公眾號(hào),當(dāng)然也希望能幫作者推廣一下富弦,更多人關(guān)注我也會(huì)更有動(dòng)力沟娱,在此先謝過了。

關(guān)注我

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腕柜,一起剝皮案震驚了整個(gè)濱河市济似,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盏缤,老刑警劉巖砰蠢,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異唉铜,居然都是意外死亡台舱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門潭流,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竞惋,“玉大人,你說我怎么就攤上這事灰嫉〔鹜穑” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵讼撒,是天一觀的道長(zhǎng)浑厚。 經(jīng)常有香客問我股耽,道長(zhǎng),這世上最難降的妖魔是什么钳幅? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任物蝙,我火速辦了婚禮,結(jié)果婚禮上敢艰,老公的妹妹穿的比我還像新娘诬乞。我一直安慰自己,他們只是感情好盖矫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布丽惭。 她就那樣靜靜地躺著击奶,像睡著了一般辈双。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柜砾,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天湃望,我揣著相機(jī)與錄音,去河邊找鬼痰驱。 笑死证芭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的担映。 我是一名探鬼主播废士,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蝇完!你這毒婦竟也來了官硝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤短蜕,失蹤者是張志新(化名)和其女友劉穎氢架,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朋魔,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡岖研,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了警检。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孙援。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖扇雕,靈堂內(nèi)的尸體忽然破棺而出拓售,到底是詐尸還是另有隱情,我是刑警寧澤洼裤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布邻辉,位于F島的核電站溪王,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏值骇。R本人自食惡果不足惜莹菱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吱瘩。 院中可真熱鬧道伟,春花似錦、人聲如沸使碾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽票摇。三九已至拘鞋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間矢门,已是汗流浹背盆色。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留祟剔,地道東北人隔躲。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像物延,于是被迫代替她去往敵國(guó)和親宣旱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)叛薯。 張土汪:刷leetcod...
    土汪閱讀 12,744評(píng)論 0 33
  • 題目 Given an unsorted integer array, find the first missin...
    Al73r閱讀 282評(píng)論 0 0
  • 問題描述 Given an unsorted integer array, find the first miss...
    codingXue閱讀 973評(píng)論 0 0
  • 這次北京之行,課程還沒有講浑吟,女兒的咳嗽已經(jīng)發(fā)展到渾身疼痛的節(jié)奏。昨晚又一次發(fā)燒案训,整個(gè)人狀態(tài)特別煩躁买置,想要睡覺。 沒...
    任亞閱讀 226評(píng)論 0 0
  • 在市場(chǎng)上挑選小葉紫檀强霎,從兩個(gè)方面下手忿项,第一就是真假,第二就是優(yōu)劣城舞。所以通常來說要從四個(gè)方面來選擇小葉紫檀轩触,分別是:...
    林遠(yuǎn)騰博客閱讀 412評(píng)論 0 0