要求高效。
思路一 :s时间上高效必然是空间上换来的,思路关键为: boolean[] nm = new boolean[100]; 将出现过的数字在数组中做下标记。
时间复杂度为 O(n)
输出结果图: 
思路二 :上述代码中有一个缺陷,最后一个数生成时,会需要较大的时间去除之前的重复数字。根据洗牌算法得到的思路为,先将数组顺序初始化,有后到前遍历一次将当前数字与之前的随机数字进行交换。
时间复杂度为 O(n),且时间总比思路一要小,也没有开辟另一个数组的空间。
输出结果图: 
两方法的代码如下:
本文介绍了两种生成不重复随机数数组的方法。方法一使用额外的布尔数组记录已生成的数字,确保生成的数字不重复。方法二受到洗牌算法的启发,通过随机交换元素来生成不重复的随机序列,这种方法不仅效率更高,而且节省了空间。
546

被折叠的 条评论
为什么被折叠?



