LeetCode 41 缺失的第乙個正數

2022-05-20 19:41:32 字數 689 閱讀 2761

題目鏈結

【題解】

先明確一點假設給的數字有n個。

那麼最後的答案最情況下就是n+1

首先我們先判斷一下所給的陣列裡面有沒有1

如果沒有直接返回1

否則。把陣列中所有的範圍超過n或者小於1的數字全都改成數字1

然後掃瞄一遍整個陣列。

for(int i = 0;i<(int)nums.size();i++)

如果遇到num[i]

那麼就把num[abs(num[i])]置為負數(即取相反數),當然如果它本來就是負數,那就不用管它。

最後再掃瞄一遍整個陣列。

哪個下標對應的數字是正的,就說明那個數字沒有出現過。則返回那個數字就好了。

【**】

class solution 

}if (!ok) return 1;

int len = nums.size();

for (int i = 0;i < len;i++)

}for (int i = 0;i < len;i++)

nums[x-1]=-abs(nums[x-1]);

}for (int i = 0;i < len;i++)

if (nums[i]>0)

return i+1;

return len+1;

}};

leetcode 41 缺失的第乙個正數

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

LeetCode 41 缺失的第乙個正數

給定乙個未排序的整數陣列,找出其中沒有出現的最小的正整數。示例 1 輸入 1 2,0 輸出 3示例 2 輸入 3 4,1,1 輸出 2示例 3 輸入 7 8,9 11,12 輸出 1說明 這題確實挺坑的,首先對陣列排個序,當時想用陣列標記的,沒想到還有int max級別的數,不過vector應該是裝...

Leetcode 41 缺失的第乙個正數

給定乙個未排序的整數陣列,找出其中沒有出現的最小的正整數。示例 1 輸入 1,2,0 輸出 3示例 2 輸入 3,4,1,1 輸出 2示例 3 輸入 7,8,9,11,12 輸出 1說明 你的演算法的時間複雜度應為o n 並且只能使用常數級別的空間。這個題第乙個想法是排序,然後遍歷即可,但是時間複雜...