牛客题霸 [数组中未出现的最小正整数] C++题解/答案
生活随笔
收集整理的這篇文章主要介紹了
牛客题霸 [数组中未出现的最小正整数] C++题解/答案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
牛客題霸 [數組中未出現的最小正整數] C++題解/答案
題目描述
給定一個無序數組arr,找到數組中未出現的最小正整數
例如arr = [-1, 2, 3, 4]。返回1
arr = [1, 2, 3, 4]。返回5
[要求]
時間復雜度為O(n)O(n),空間復雜度為O(1)O(1)
題解:
如果一個數是正整數,那我們就把他換到他所屬的位置上
比如讀到2,我們就把2換到第2個位置上
這樣所有位置上都是他對應的數,哪個位置存在空缺就說明未出現哪個正整數
代碼:
class Solution { public:/*** return the min number* @param arr int整型vector the array* @return int整型*/int minNumberdisappered(vector<int>& arr) {// write code hereint len=arr.size();for(int i=0;i<len;i++){if(arr[i]>0&&arr[i]<len)swap(arr[i],arr[arr[i]-1]);}for(int i=0;i<len;i++){if(arr[i]!=i+1)return i+1;}return len+1;} };總結
以上是生活随笔為你收集整理的牛客题霸 [数组中未出现的最小正整数] C++题解/答案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客题霸 [字符串的排列] C++题解/
- 下一篇: 牛客题霸 [将字符串转化为整数] C++