给一个数组, 19个整数, 范围1-20, {1,2,9,11,3,5,7,4,6,8,10,13,14,15,17,16,19,18,20}. 请编程找出该数组缺少1-20中的哪个数

传统的做法:
public static void main(String[] args)
	{
		// 给一个数组, 19个整数, 范围1-20,
		// {1,2,9,11,3,5,7,4,6,8,10,13,14,15,17,16,19,18,20}.
		// 请编程找出该数组缺少1-20中的哪个数
		int[] a = { 1, 2, 9, 11, 3, 5, 7, 4, 6, 8, 10, 13, 14, 15, 17, 16, 19, 18, 20 };
		for (int i = 1; i <= 20; i++)
		{
			boolean flag = false;
			for (int j = 0; j < 19; j++)
			{
				//如果在a数组中找到了和i相等的值 则把flag赋值为true, 同时break
				if (i == a[j])
				{
					flag = true;
					break;
				}
			}
			if (!flag)
			{
				System.out.println("缺少" + i);
			}
		}
	}

  更高级的做法:

public static void main(String[] args)
	{
		// 给一个数组, 19个整数, 范围1-20,
		// {1,2,9,11,3,5,7,4,6,8,10,13,14,15,17,16,19,18,20}.
		// 请编程找出该数组缺少1-20中的哪个数
		int[] a = { 1, 2, 9, 11, 3, 5, 7, 4, 6, 8, 10, 13, 14, 15, 17, 16, 19, 18, 20 };
		int sumArray = 0;
		for(int m = 0; m < 19; m++)
		{
			sumArray += a[m];
		}
		int sumNum = (1 + 20) * 20 / 2;
		System.out.println("缺少" + (sumNum - sumArray));
	}

  

posted @ 2012-09-11 08:13  IT达芬奇  阅读(1370)  评论(1)    收藏  举报