这是一道简单的面试题,我本着是否能找出更好的方法来,在网上找了很多别人的方法,把code都copy下来运行,发现还是有错误.所以自己就写了一个累赘的例子,不过不会有错.
思路:采用Random得到1-100的随机数(因为Random取值是0<=a<1之间的数,所以采用了一个三目运算),这个面试题的难点是取出1-100中随机而又不重复的整数.然后用1-100的总和减去99个随机数的总和,这样就得到了未放进的数.
思路:采用Random得到1-100的随机数(因为Random取值是0<=a<1之间的数,所以采用了一个三目运算),这个面试题的难点是取出1-100中随机而又不重复的整数.然后用1-100的总和减去99个随机数的总和,这样就得到了未放进的数.
package random;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.SortedSet;
import java.util.TreeSet;
public class RandomTest2 {
public int[] array = new int[99];
private Object[] array1;
private int tmp;
int sum = 0;
public void init() {
Random random = new Random();
SortedSet set = new TreeSet();//根据其特性,set集合中不会保存重复的元素
for (int i = 0; i >= 0; i++) {
if (set.size() > 98) {
break;
}
tmp = random.nextInt(100);//得到1-100中的99个随机数
tmp = tmp == 0 ? 100 : tmp;//将得到0转换成100
set.add(tmp);
}
List list = new ArrayList();
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
list.add(iterator.next());
}
array1 = list.toArray();
}
public void getArray() {
for (Object ii : array1) {
int a = Integer.parseInt(ii.toString());
sum += a;
}
System.out.println(5050 - sum);
}
public static void main(String[] args) {
for (int i = 0; i < 101; i++) {
RandomTest2 rt = new RandomTest2();
rt.init();
rt.getArray();
}
}
}