zoukankan      html  css  js  c++  java
  • 数组的一些问题

    一、给定一个多维数组arr,实现一个方法获取数组的最大深度(维度)

    例1:arr = [1, 2, [3, 4, [5]], 8],则返回3

    例2:arr = [1, 2, [5], 8],则返回2

       var  a = 1;
        var arr = [1, 2, [3, 4, [5]], 8]  //3
        //var arr = [1,2,[5],8] //2
        function fn(arr){
            for (i=0;i<arr.length;i++){
                if(arr[i] instanceof Array){
                    a++;
                    arr = arr[i];
                    fn(arr);
                }
            }
            return a;
        }
        console.log(fn(arr));

    二、实现一个方法,生成数组[1,2,3,4......,99],然后将数组内的项随机打乱,保证每个数出现在任意一个位置的概率相同

       var arr2 = new Array();
        for (var i = 0; i < 100; i++) {
            arr2.push(i);
        }
        // arr2.sort(() => Math.random() - 0.5); //ES6
        arr2.sort(function () {
            return Math.random() - 0.5;
        });
        console.log(arr2);

    三、给定一个数组arr和一个数值target,数组内的每一项都是数字。如果数组中某两项下,x,y相加等于target,则把这两项以[x,y]的格式放到一个空数组中。写一个方法,获得有满足条件的项,并返回最后的数组。

    注:如[4,6] 与 [6,4]则是为等价,只允许在结果中出现一次。

    例1:arr = [1, 2, 4, 7, 3, 6],target = 10,则返回:[ [ 4 , 6 ] , [ 7 , 3 ] ]

    例2:arr = [1, 2, 4, 7],target = 10,则返回:[  ]

       var arr = [1, 2, 4, 7, 3, 6];
        var target = 10;
        var brr = [];
        for (var i = 0; i < arr.length; i++) {
            for (let j = i; j < arr.length; j++) {
                if (arr[i] + arr[j] == target) {
                    var crr = [];
                    crr.push(arr[i]);
                    crr.push(arr[j]);
                    brr.push(crr)
                }
            }
        }
        console.log(brr)
  • 相关阅读:
    史上最全的SpringMVC学习笔记
    bzoj4551 [Tjoi2016&Heoi2016]树
    bzoj1196 [HNOI2006]公路修建问题
    bzoj3573 [Hnoi2014]米特运输
    bzoj3527 [Zjoi2014]力
    bzoj4197 [Noi2015]寿司晚宴
    【国家集训队2012】tree(伍一鸣)
    bzoj2748 [HAOI2012]音量调节
    bzoj2049 [Sdoi2008]Cave 洞穴勘测
    bzoj3611 [Heoi2014]大工程
  • 原文地址:https://www.cnblogs.com/shy0113/p/11683488.html
Copyright © 2011-2022 走看看