美文网首页
算法 依次输出1到100的数字 要求随机且不能重复

算法 依次输出1到100的数字 要求随机且不能重复

作者: jalen2024 | 来源:发表于2022-03-26 20:23 被阅读0次

    题目是: 有1~100的数字,每次输出的数据都是随机的不能重复,时间复杂度在O(n).

    解答:

    这里是反向循环开始

        public static int N = 100;
       
       public static void main(String[] args) {
            ArrayList<Integer> list = new ArrayList<Integer>();
            for (int i = 1; i <= N; i++) {
                list.add(i);
            }
            int size = list.size();
            int count = 0;
            for (int j = size; j > 0; j--) {
                int index = new Random().nextInt(j);
                int value = list.get(index);
                System.out.println("随机位置:" + index + "--对应的数据:" + value + "--当前循环次数:" + count);
                list.remove(index);
                count++;
            }
        }
    

    上述代码可以正确运行完成。


    image.png

    但是如果按照下面的写法是会报错的, 这里是从1到N开始循环

    public static void main(String[] args) {
            ArrayList<Integer> list = new ArrayList<Integer>();
            for (int i = 1; i <= N; i++) {
                list.add(i);
            }
            int count = 0;
            for (int j = 1; j < N; j++) {
                int index = new Random().nextInt(j);
                int value = list.get(index);
                System.out.println("随机位置:" + index + "--对应的数据:" + value + "--当前循环次数:" + count);
                list.remove(index);
                count++;
            }
        }
    
    image.png

    相关文章

      网友评论

          本文标题:算法 依次输出1到100的数字 要求随机且不能重复

          本文链接:https://www.haomeiwen.com/subject/wpbsjrtx.html