问题描述
使用公式 n=n*(n+1)/2 求 n 个数字的总和 查找给定数组中存在的元素的总和。 减法(n 个数字的总和 - 数组中存在的元素的总和)。 查找数组中缺失数字的Java程序:
package org.arpit.java2blog;
public class MissingNumberMain {
public static void main(String[] args) {
int[] arr1={7,5,6,1,4,2};
System.out.println("Missing number from array arr1: "+missingNumber(arr1));
int[] arr2={5,3,1,2};
System.out.println("Missing number from array arr2: "+missingNumber(arr2));
}
public static int missingNumber(int[] arr)
{
int n=arr.length+1;
int sum=n*(n+1)/2;
int restSum=0;
for (int i = 0; i < arr.length; i++) {
restSum+=arr[i];
}
int missingNumber=sum-restSum;
return missingNumber;
}
}
当你运行上面的程序时,你会得到以下输出:
Missing number from array arr1: 3
Missing number from array arr2: 4
解决方法
给你一个包含 1 到 n 的整数数组,但数组中从 1 到 n 的数字之一丢失了。您需要提供最佳解决方案来找到丢失的数字。数组中的数字不能重复。
例如:
int[] arr1={7,5,6,1,4,2};
Missing numner : 3
int[] arr2={5,3,2};
Missing numner : 4