您的位置:首页 > 其它

给一个由n-1个整数组成的未排序的序列,其元素都是1~n中的不同的整数。如何在线性时间复杂度内寻找序列中缺失的整数

2014-03-10 16:59 573 查看
思路分析:尼玛这不就是等差数列么。首先将该n-1个整数相加,得到sum,然后用(1+n)n/2减去sum,得到的差即为缺失的整数。因为1~n一共n个数,n个数的和为(1+n)n/2,而未排序数列的和为sum,二者之差即为确实的数。

程序示例如下:

#include "stdafx.h"
#include <stdio.h>
#define MAX 5
int main()
{
int array[MAX] = { 3, 2, 1, 6, 4 };
int i;
int sum = 0;
int temp;
for (i = 0; i < MAX; i++)
sum += i;
temp = (MAX + 1)*(MAX) / 2 - sum;
printf("%d\n", temp);
getchar();
return 0;
}


  效果如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐