zoukankan      html  css  js  c++  java
  • 求无序数组中未出现的最小正整数

    给定一个无序整型数组arr,找到数组中未出现的最小正整数。要求时间复杂度为O(N),空间复杂度为常数级。

    例如:

    arr=[33,33,33,33]  返回1

    arr=[34,56,45,12]  返回1

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

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

    。。。

    随便什么都行

    原理很简单,代码用数据跑一遍就看出思想了。

     1 #include<iostream>
     2 #include<fstream>
     3 using namespace std;
     4 int main()
     5 {
     6     ifstream in("test.txt");
     7     int n,i;
     8     in>>n;//数组长度,数组元素个数
     9     int *arr=new int[n];
    10     for(i=0;i<n;i++)
    11         in>>arr[i];
    12     for(i=0;i<n; )
    13     {
    14         if(arr[i]!=i+1&&arr[i]>=1&&arr[i]<=n&&arr[i]!=arr[arr[i]-1])
    15         {
    16             int temp=arr[arr[i]-1];
    17             arr[arr[i]-1]=arr[i];
    18             arr[i]=temp;
    19             //交换后的数据
    20             /*
    21             for(int j=0;j<n;j++)
    22                 cout<<arr[j]<<" ";
    23             cout<<endl;
    24             */
    25         }
    26         else
    27             i++;
    28     }
    29     for(i=0;i<n;i++)
    30         if(arr[i]!=i+1)
    31         {
    32             cout<<i+1<<endl;
    33             break;
    34         }
    35     if(i>=n)
    36         cout<<n+1<<endl;
    37     return 0;
    38 }
  • 相关阅读:
    centos崩溃后如何修复
    乘法是啥
    接上篇—用spring注入DBbean,并使用maven管理
    技术产生价值
    技术?
    世界的本质是啥呢
    java-web 登陆功能
    对java的理解
    数学的历史
    使用jmeter测试接口
  • 原文地址:https://www.cnblogs.com/zhaopeng938/p/7603390.html
Copyright © 2011-2022 走看看