zoukankan      html  css  js  c++  java
  • 一道返回不重复数组的测试题

    编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。

    注:n的值应该在0到30之间,超出应做处理,本文解法就不处理了。另本文解法不考虑算法性能,因为本人菜。

    解法一

    getRandomArray(n) {
            var array = [];
            for (let i = 2; i <= 32; i++) {
                array.push(i);
            }

            for (let i = array.length; i > 0; i--) {
                var j = Math.floor(Math.random() * i);
                // var x = array[i - 1];
                // array[i - 1] = array[j];
                // array[j] = x;
                [array[i - 1], array[j]] = [array[j], array[i - 1]];
            }

            console.log(array.splice(2, n));
        }
     
    解法二
    getRandomArray1(n) {
            console.log(n);

            var array = [], obj={};
            for (var i = 0; i < n; i++) {
                var a = Math.floor(2 + Math.random() * 31);
                if (!obj[a]) {
                    array.push(a);
                    obj[a] = a;
                }else{
                    obj["repeatIndex" + i] = a; // 添加出现的重复值,便于查看
                    i--
                }
            }
            console.log(array);
        }
     
  • 相关阅读:
    【VUE】数据库动态渲染标签,并且动态绑定事件与激活图标
    Linux shell select
    ceph介绍和安装
    C# 保存网络图片至本地项目中
    CS229 斯坦福大学机器学习复习材料(数学基础)
    SPRING.NET FRAMEWORK 3.0 GA啦
    U盘装机神器
    一行css让网页风格变成暗黑模式
    vue3 自学(一)基础知识学习和搭建一个脚手架
    windows使用nvm管理node不同版本
  • 原文地址:https://www.cnblogs.com/mjbin/p/6525697.html
Copyright © 2011-2022 走看看