zoukankan      html  css  js  c++  java
  • 稀疏数组与密集数组

    稀疏数组

    稀疏数组:索引不连续,数组长度大于元素个数的数组, 可以简单理解为有empty的数组,类似于empty元素代表这个位置没有初始化,

     let arr1 = new Array(5);
          console.log(arr1);
          let arr = [1, 3, , ,];
          console.log(arr);
    

    empty与undefined

    empty代表数组连这个索引都没有初始化,undefined是代表索引初始化了,只是存入的值是undefined

    判断稀疏数组元素

    通过in

     let arr1 = [1, 3, , , , 45];
        console.log(arr1, "arr1");
        let len = arr1.length >>> 0;
        let A = new Array(len);
        for (let i = 0; i < len; i++) {
    //判断原型是否有 i
          if (i in arr1) {
            console.log(arr1[i]);
          }
        }
    

    所以稀疏数组在大多数遍历数组的方法中,遇到「empty」元素的时候,callback 函数是不会执行的,如:map等
    具体的实现就是通过in判断的

    所以在很多在自己实现map等遍历方法的时候都需要加一句 if (k in O)来排除empty元素

    密集数组

    密集数组:索引连续, 数组长度等于元素个数的数组

      let arr = [1, 3, 4, 5, 2];
          console.log(arr);
    

  • 相关阅读:
    NOIP2009 靶形数独
    NOIP2014 寻找道路
    NOIP2005 篝火晚会
    NOIP2014 联合权值
    NOIP2011 选择客栈
    luogu2659 美丽的序列
    NOIP2008 传纸条
    vijos1642 班长的任务
    codevs1427 RQNOJ204 特种部队
    AC自动机
  • 原文地址:https://www.cnblogs.com/heihei-haha/p/14900757.html
Copyright © 2011-2022 走看看