阿里笔试-从1到1000生成900个不重复的随机数并打印出来

简介: <p><span style="white-space:pre"></span>前几天参加阿里笔试,有道程序题大意是这样的,从1到1000生成900个不重复的随机数并打印出来。当时做了好久,勉强做出来了,和大家分享一下,如果您有更好的方法,望不吝赐教。</p> <p>我的思路是:</p> <p>1.定义数组arr存入随机数;</p> <p>2.用Arrays.binarySearch

前几天参加阿里笔试,有道程序题大意是这样的,从1到1000生成900个不重复的随机数并打印出来。当时做了好久,勉强做出来了,和大家分享一下,如果您有更好的方法,望不吝赐教。

我的思路是:

1.定义数组arr存入随机数;

2.用Arrays.binarySearch()搜索数组中是否包含新生成的的随机数;

3.不包含则将新随机数存进数组,包含则不添加;

4.Arrays.binarySearch()需要对数组排序,所以得复制一个相同的数组来排序并检测是否包含新随机数,不然最后生成的随机数就只有450个了,其余全部是0。

代码如下

import java.util.*;

public class test1 {
	public static void main(String[] args) {
		int[] arr = new int[900];// 创建2个数组
		int[] arr2=new int[900];		
		for (int i = 899; i >0; i--) {
			int a = (int) ((Math.random()) * 1001);// 生成1到1000的随机数a
			Arrays.sort(arr2);//排序后才能用binarySearch()方法
			int result = Arrays.binarySearch(arr2, a);// 查看数组arr2中是否有a
			if (result < 0) {// 没有a就把a加入数组
				arr[i] = a;
				arr2[i]=a;
			} else
				// 有a就把i加1,使i值不变
				i++;
		}
		for (int i = 0; i < 900; i++)
			System.out.println("第" + (i + 1) + "个: " + arr[i]);
	}
}

如果您有任何问题,欢迎留言。

 祝君好运!

目录
相关文章
|
12月前
442. 数组中重复的数据
442. 数组中重复的数据
|
存储 Java 测试技术
打印不重复的字符串全排列(递归)
本文将详细解析在生成不重复的字符串全排列时使用的Java代码。首先,我们将展示一个常规的全排列生成方法,然后介绍如何通过使用HashSet来跳过已经尝试过的字符,从而避免生成重复的全排列。最后,我们提供了一道相关的编程题目以供练习。
115 0
打印不重复的字符串全排列(递归)
1245:不重复地输出数 2020-12-28
1245:不重复地输出数 2020-12-28
编写一个满足下面要求的程序:创建一个由100个随机选取的整数构成的数组 提示用户输入数组的下标,然后显示对应的元素值,如果指定的下标越界,则显示消息“Out of Bounds”
编写一个满足下面要求的程序:创建一个由100个随机选取的整数构成的数组 提示用户输入数组的下标,然后显示对应的元素值,如果指定的下标越界,则显示消息“Out of Bounds”
174 0
|
算法 Go
算法练习第十题——寻找重复数(不修改数组)
给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。
|
算法 前端开发
数组中重复的数据
🎈每天进行一道算法题目练习,今天的题目是“数组中重复的数据”。
166 0