寻找缺失的整数
1. 问题陈述
给定一个由n-1个整数组成的未排序的序列,其中的元素都是1到n中的不同整数,请设计一个算法在O(n)的时间内寻找到缺失的那个整数。
2. 解题思路
2.1 常规的思路,使用二重循环实现,但是算法的时间复杂度在O(n*n)。
2.2 可以使用累加求和的方式实现。实现代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FindMissingNumber
{
class Program
{
static void Main(string[] args)
{
// n = 5
int n= 5;
int[] arr = new int[] { 1, 3, 5, 4};
int expectedSum = (1 + n) * n / 2;
int actualSum = 0;
foreach( int item in arr )
{
actualSum += item;
}
Console.WriteLine(
String.Format("Find the missing number : {0}", expectedSum - actualSum));
Console.ReadKey();
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FindMissingNumber
{
class Program
{
static void Main(string[] args)
{
// n = 5
int n= 5;
int[] arr = new int[] { 1, 3, 5, 4};
int expectedSum = (1 + n) * n / 2;
int actualSum = 0;
foreach( int item in arr )
{
actualSum += item;
}
Console.WriteLine(
String.Format("Find the missing number : {0}", expectedSum - actualSum));
Console.ReadKey();
}
}
}