zoukankan      html  css  js  c++  java
  • 心存疑惑的小兰——求没出现过的最小正整数



    题目:



    分析:

    思路一:

    这道题要求没有出现过的最小正整数,最直接的暴力法就是用一个变量i从1开始自加,对每一个i都遍历一遍数组,如果有发现和i相等的,i++,再遍历一遍,如果没有,就输出i。


    思路二:

    由于给出的数都是正整数,可以用来做数组下标,如果有一个bool数组,初值为false,每输入一个正整数num,就把以num-1为下标的值改为true,说明该正整数已经出现过。那么最后只要遍历一遍数组,第一个值为false的下标i再加上1就是所要找的最小正整数。由于题目给出的N最大为1000,也就是说最多会有1000个数,如果给出的数num都在1<=num<=1000,那么输出的结果一定是在11001,当输入为11000这1000个数时,输出结果为1001,是最极端的情况;如果给出的数中出现了一个num>1000,那么最后的结果一定是在1~1000,也就是说不管怎样,在N<=1000的情况下,输出结果不会超过1001,所以bool数组开1001就够了并且大于1000的数可以不考虑。



    代码:

    思路一:

    #include<iostream>
    using namespace std;
    
    int main()
    {
        int n,i,r,a[1000],k;
    
        cin>>n;
    
        for(i=0;i<n;i++)
    	    cin>>a[i];
    	
        for(r=1;;r++)
        {
    	    k=0;                      //用k来标记是否有出现该正整数
    	
    	    for(i=0;i<n;i++)
    	    {
    		    if(r==a[i])
    		    {
    			    k=1;
    			    break;
    		    }		
    	    }
    	
    	    if(k==0)                 //如果k==0,说明这个数没有出现,这时的r就是结果
    		    break;
        }
    
        cout<<r<<endl;
    
        return 0;
     } 
    

    思路二:

    #include<iostream>
    using namespace std;
    
    int main()
    {
        int n,i,num;
        bool a[1001]={false};               //bool数组开1001就够,且初值都为false
    
        cin>>n;
    
        for(i=0;i<n;i++)
        {
    	    cin>>num;
    	    if(num<1001&&!a[num-1])      //大于1000的数可以不考虑,并且可能会有重复的数,所以判断条件加上a[num-1]!=false
    		    a[num-1]=true;
        }
    
        for(i=0;i<n;i++)
        {
    	    if(!a[i])                  //满足条件说明已经找到了,可以结束并输出了
    		    break;
        }
    
        cout<<i+1<<endl;
    
        return 0;
     } 
    


  • 相关阅读:
    leetcode 189. Rotate Array 数组旋转 ---------- java
    Google test Problem A. Country Leader
    leetcode 187. Repeated DNA Sequences 求重复的DNA串 ---------- java
    mysql忘记密码(未初始化)
    leetcode 186. Reverse Words in a String II 旋转字符数组 ---------- java
    CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)(转载)
    bootstrap
    bootstrap使用中遇到的问题(二)
    兼容ie8 rgba()用法
    浏览器前缀
  • 原文地址:https://www.cnblogs.com/jiuweilinghu/p/5931776.html
Copyright © 2011-2022 走看看