根据上篇文章生成1-100中不重复的99个无序数字放在数组中,写方法拿出没有放入的那个数:
算法一:
思路:将99个数累加,假设总和为sum,1-100累加为5050,5050-sum即为没放入的那个数。
public void showNum(int[] a) {
int sum = 0;
for(int i = 0; i < a.length; ++i) {
sum += a[i];
}
System.out.println(5050 - sum);
}
算法二:
思路(来自网络编程大虾):生成容量为100的数组B,将原数组A的第n个数组的值m放在B的第(m-1)个数组中,这样,数组B就是按从小到大码好顺序的数组A,为0的数组下标即为没放入的那个数。
private void showNum(int[] a) {
int[] b = new int[100];
for(int i = 0; i < a.length - 1; ++i) {
b[a[i] - 1] = a[i];
}
for(int i = 0; i < b.length; ++i) {
System.out.print(b[i] + " ");
}
}