找出数列中不存在的数据项

Problem

Find the missing number from the list of 99 distinct numbers which are from 1-100

Solution

Compute sum of the list.
Compute desirable sum without missing number.
The missing number is desirable sum minus actual sum.

using System;
using System.Collections.Generic;
using System.Linq;

namespace MissingNumber
{
    class Program
    {
        static int FindMissingNumber(List<int> list, int low, int up)
        {
            int sum = (up + low) * (up - low + 1) >> 1;

            Console.WriteLine("Expected sum without missing {0}", sum);
            Console.WriteLine("Actual sum without missing {0}", list.Sum());

            return sum - list.Sum();
        }

        static void Main(string[] args)
        {
            List<int> list = new List<int>();
            Random random = new Random(100);
            int low = 1;
            int up = 100;
            int missNumber = random.Next(low, up);

            for (int i = low; i < missNumber; ++i)
            {
                list.Add(i);
            }

            for (int i = missNumber + 1; i <= up; ++i)
            {
                list.Add(i);
            }

            int line = 0;
            foreach (int k in list)
            {
                Console.Write("{0, 4} ", k);
                line++;
                if (line == 10)
                {
                    line = 0;
                    Console.WriteLine();
                }
            }

            Console.WriteLine();

            Console.WriteLine("The missing number is: {0}.", FindMissingNumber(list, low, up));
        }
    }
}

Output

   1    2    3    4    5    6    7    8    9   10
  11   12   13   14   15   16   17   18   19   20
  21   22   23   24   25   26   27   28   29   30
  31   32   33   34   35   36   37   38   39   40
  41   42   43   44   45   46   47   48   49   50
  51   52   53   54   55   56   57   58   59   60
  61   62   63   64   65   66   67   68   69   70
  71   72   73   74   75   76   77   78   79   80
  81   82   83   84   85   86   87   88   89   90
  91   92   93   94   95   97   98   99  100
Expected sum without missing 5050
Actual sum without missing 4954
The missing number is: 96.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值