找到第乙個丟失的正數

2022-07-19 09:51:09 字數 675 閱讀 9328

given an unsorted integer array, find the first missing positive integer.

for example,

given[1,2,0]return3,

and[3,4,-1,1]return2.

此題關鍵在於理解first missing positive intege。

題意為:一共n個數,有正數有負數,還有0.找到乙個最小的正數不在這個集合中

可以分析得到,整個最小的正數,最小是1,最大是 n + 1.

解法1:

用hash儲存一下每個元素,然後從1開始查,check是否在hash裡面,不在輸出即可。

簡單明瞭,但是如果空間複雜度有限制?即 不用hash怎麼辦?

解法2:

用陣列本身作為hash表進行查詢,**如下:

int firstmissingpositive(int a, int n) 

else if ((a[i] < i + 1) || (a[i] - 1 >= n) || (a[a[i] - 1] == a[i]))

else

}return n + 1;

}

思路超級贊!

尋找第乙個丟失的正數

given an unsorted integer array,find the first missing positive integer.for example,given 1,2,0 return3,and 3,4,1,1 return2.your algorithm should run ...

缺失的第乙個正數

給定乙個未排序的整數陣列,找出其中沒有出現的最小的正整數。示例 1 輸入 1,2,0 輸出 3 示例 2 輸入 3,4,1,1 輸出 2 示例 3 輸入 7,8,9,11,12 輸出 1 說明 你的演算法的時間複雜度應為o n 並且只能使用常數級別的空間。方法一 不是最優 function firs...

缺失的第乙個正數

給你乙個未排序的整數陣列 nums 請你找出其中沒有出現的最小的正整數。高階 你可以實現時間複雜度為 o n 並且只使用常數級別額外空間的解決方案嗎?示例 1 輸入 nums 1,2,0 輸出 3 示例 2 輸入 nums 3,4,1,1 輸出 2 其實如果沒有規定時間複雜度和空間複雜度的話,so ...