已知一个数组random[99],其中包含从1-100中随机抽取的99个不重复的自然数

这是一道简单的面试题,我本着是否能找出更好的方法来,在网上找了很多别人的方法,把code都copy下来运行,发现还是有错误.所以自己就写了一个累赘的例子,不过不会有错.
思路:采用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();
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值