• 解陈利人新浪微博的题目--找到第一个不在数组的数


    题目:指定一个无序的整数数组,怎么找到第一个大于0.并且不在此数组的整数。比如:[1,2,0],返回3;[3,4,-1,1],返回2.最好能0(1)空间和O(n)时间。

    分析:借助微博上给的思路:给数组处理后,如果遍历的时候,出现a[i]!=i,则i为所求的值。解决思路详见陈利人的新浪微博。

    代码:

    #include<iostream>
    using namespace std;
    #include<algorithm>
    bool f(int a[],int n)
    {
         bool flag=false;
         if(a[0]>=1)//为什么写这步,可思考下面所列的第三个数组
         for(int i=0;i<n;i++)
        {
          if(a[i]!=i+1)
          {
            cout<<i+1<<endl;
            flag=true;
            break;
           }
         }
        else 
        for(int i=1;i<n;i++)
        {
            if(a[i]<=0)continue;
            if(a[i]!=i)
          {
              cout<<i<<endl;
              flag=true;
              break;
           } 
         }
         return flag;
    }
    int main()
    {
    /*int a[]={3,4,-1,1
    };
    /*int a[]={
    1,2,0
    };*/
    /*int a[]={
    6,4,3,2,1
    };*/
    int n=sizeof(a)/sizeof(int);
    int i;
    sort(a,a+n);
      if(!f(a,n))
      {
          cout<<n<<endl;  
       }
        return 0;
    }

    如有更好的解法,欢迎指教,谢谢。

  • 相关阅读:
    loadrunner 11安装教程
    测试用例
    软件测试分类
    软件测试模型
    VMware Workstation安装Red hat7.0联网问题总结
    Python网络编程基础pdf
    Python数据可视化编程实战pdf
    Python数据分析实战
    Python数据科学手册
    Python入门经典. 以解决计算问题为导向的Python编程实践
  • 原文地址:https://www.cnblogs.com/eeason/p/3317471.html
Copyright © 2020-2023  润新知