给定一个数组,输出最小缺失整数

给定一个数组,输出最小缺失整数

例如:输入[1,2,3] 输出:4
输入[7,8,9,11] 输出:1
输入[-1,-2,1] 输出:2

解析:将输入的数组进行排序,接着判断数据是否大于n,大于n就输出1,或者全小于1也输出1。将小于n的数据在数组中排好,如果
第i个的值不等于i+1,那么就输出i+1;如果都在区间内,就输出区间长度+1.

int out_int(char s[],int len)
{
if(len ==0)
  return 1;
 int i=0;
 sort(s,0,len-1);//将输入数组进行排序
 while(i<len)
 {
  	if((s[i]<len) && (s[i]>=1)) 
        { 
 	  int tmp = s[s[i]-1];
 	  printf("tmp:%d %d  %d\n",s[i],s[i]-1,tmp);
 	  s[s[i]-1]=s[i];
 	  s[i]=tmp;
        }
  i++;
 }
 for(int j=0;j<len;j++)
 {
  if(s[j] != j+1)
   return j+1;
 }
 return len+1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值