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 ...