码迷,mamicode.com
首页 > 其他好文 > 详细

寻找最小的整数

时间:2014-09-17 10:00:01      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   使用   ar   for   div   

题目:给定一个无序的整数数组,怎么找到第一个大于0,并且不在此数组的整数。比如[1,2,0]返回3,[3,4,-1,1]返回2,[1, 5, 3, 4, 2]返回6,[100, 3, 2, 1, 6,8, 5]返回4。要求使用O(1)空间和O(n)时间

解答:不停的让a[i] =i  归位。

#include <stdio.h>
void Swap(int &a, int &b)
{
  int c = a;
  a = b;
  b = c;
}
int FindFirstNumberNotExistenceInArray(int a[], int n)
{
  int i;
  for (i = 0; i < n; i++)
    while (a[i] > 0 && a[i] <= n && a[i] != i + 1 && a[i] != a[a[i] - 1])
        Swap(a[i], a[a[i] - 1]);
  for (i = 0; i < n; i++)
    if (a[i] != i + 1)
      break;
  return i + 1;
}
void PrintfArray(int a[], int n)  
{  
  for (int i = 0; i < n; i++)  
    printf("%d ", a[i]);  
  putchar(\n);  
} 
int main()
{
 const int MAXN = 5;
  int a[MAXN] = {2, -100, 4, 1, 70};
  PrintfArray(a, MAXN);
  printf("该数组缺失的数字为%d\n", FindFirstNumberNotExistenceInArray(a, MAXN));
  return 0;
}

参考:http://blog.csdn.net/morewindows/article/details/12683723

寻找最小的整数

标签:style   blog   http   color   io   使用   ar   for   div   

原文地址:http://www.cnblogs.com/lycatse/p/3976363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!