数组中未出现的最小正整数

来源:互联网 发布:金税盘开票软件最新版 编辑:程序博客网 时间:2024/04/26 05:03

【题目】

给定一个无序整型数组arr,找到数组中未出现的最小正整数。 

【举例】

arr=[-1,2,3,4]。返回1。

arr=[1,2,3,4]。返回5

#include<iostream>
using namespace std;
int missNum(int *arr,int length);
int main()
{
int arr[4]={1,2,4,5};
cout<<missNum(arr,4)<<endl;
return 0;
}


int missNum(int *arr,int length)
{
    int l = 0;
    int r = length;
    while(l < r)
    {
        if(arr[l] == l + 1)
        {
            l++;
        }
        else if(arr[l] <= l || arr[l] > r || arr[arr[l] - 1] == arr[l])
        {
            arr[l] = arr[--r];
        }
        else
        {
swap(arr[l] ,arr[arr[l] - 1]);
        }
    }
    return(l + 1);
}

0 0
原创粉丝点击