• js:数据结构笔记8--集合


    集合:唯一性,无序性;

    基本结构:

     function Set () {
       this.dataStore = [];
       this.add = add;
       this.remove = remove;
       this.contains =contains;
       this.show = show; 
     }
     function contains(data) {
      var pos = this.dataStore.indexOf(data);
      if(pos > -1) {
        return true;
      } else {
        return false;
      }
     }
     function add(data) {
       var pos = this.dataStore.indexOf(data);
       if( pos < 0) {
         this.dataStore.push(data);
         return true;
       } else {
         return false;
       }
     }
     function remove(data) {
       var pos = this.dataStore.indexOf(data);
       if(pos > -1) {
         this.dataStore.splice(pos,1);
         return true;
       } else {
         return false;
       }
     }
     function show() {
       console.log(this.dataStore);
     }
    

    操作:demo

     集合的基本操作:并集,交集,补集;

    并集:

    新增:
     function union(set) {
        var tempSet = new Set();
        for(var i = 0; i < this.dataStore.length; ++i) {
          tempSet.add(this.dataStore[i]);
        }
        for(var i = 0; i < set.dataStore.length; ++i) {
          var setData = set.dataStore[i];
          if(!tempSet.contains(setData)) {
            tempSet.dataStore.push(setData);
          }
        }
        return tempSet;
     }
    

    操作: demo;

    交集:

    新增:
     function intersect(set) {
      var tempSet = new Set();
      for(var i = 0; i < this.dataStore.length; ++i) {
        var thisData = this.dataStore[i];
        if(set.contains(thisData)) {
          tempSet.add(thisData);
        }
      }
      return tempSet;
     }

    操作: demo;

     补集:

    新增:
    
     function difference(set) {
      var tempSet = new Set();
      for(var i = 0; i < this.dataStore.length; ++i) {
        var thisData = this.dataStore[i];
        if(!set.contains(thisData)) {
          tempSet.add(thisData);
        }
      }
      return tempSet;
     }
    

    父集判断:

    新增:
     function size() {
      return this.dataStore.length;
     }
     function subset(set) {
       if(this.size() > set.size()) {
          return false;
       } else {
        for(var i = 0; i < this.dataStore.length; ++i) {
          var thisData = this.dataStore[i];
          if(!set.contains(thisData)) {
            return false;
          }
        }
       }
       return true;
     }
    

     操作:demo

  • 相关阅读:
    LeetCode 1748. 唯一元素的和
    LeetCode 2047. 句子中的有效单词数
    LeetCode 1345. 跳跃游戏 IV
    LeetCode 1725. 可以形成最大正方形的矩形数目
    LeetCode 1765. 地图中的最高点
    LeetCode 2034. 股票价格波动
    LeetCode 1996. 游戏中弱角色的数量
    LeetCode 2013. 检测正方形
    LeetCode 1219. 黄金矿工
    LeetCode 2045. 到达目的地的第二短时间
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4032022.html
Copyright © 2020-2023  润新知