JS-集合(常见操作方法)

JavaScript085

JS-集合(常见操作方法),第1张

<!--封装集合类-->

//我们的集合里面不允许有重复的元素

    function Set(){

//    属性

        this.items={}

//    add方法

        Set.prototype.add=value=>{

//判断当前集合是否包含了该元素

            if (this.has(value))return false

            //将元素添加到集合中

            this.items[value]=value//集合中,键为value,值为value

            return true

        }

//        has方法--判断集合中是否有某一个元素!

        Set.prototype.has=(value)=>{

return this.items.hasOwnProperty(value)

}

//        remove方法

        Set.prototype.remove=(value)=>{

//  1.判断集合中是否包含该元素

            if (!this.has(value))return false

        //  2.包含则删除集合中的属性,delete是js中的属性

            delete this.items[value]

return true

        }

//        clear方法

        Set.prototype.clear=()=>{

this.items={}

}

//        size方法

        Set.prototype.size=()=>{

return Object.keys(this.items).length

        }

//        获取集合中所有的值

        Set.prototype.values=()=>{

return Object.keys(this.items)

}

}

给定一个数组 A,将其划分为两个不相交(没有公共元素)的连续子数组 left 和 right, 使得:

left 中的每个元素都小于或等于 right 中的每个元素。 left 和 right 都是非空的。 left 要尽可能小。 在完成这样的分组后返回 left 的长度。可以保证存在这样的划分方法。

力扣- 分割数组

例如:

数组 [5]所有子集最大值为 5

数组 [5 ,0] 所有子集最大值为 5

数组 [5 ,0, 3]所有子集最大值为 5

数组 [5 ,0, 3 , 8] 所有子集最大值为 8

数组 [5 ,0, 3, 8, 6] 所有子集最大值为 5

maxLeft = [ 5, 5, 5, 8, 8]

同理可得 minRight = [0, 0 ,3, 6, 6]

比较时候 maxLeft[0] 与 minRight[1] 相当于是 [5] 在和 [0, 3, 8, 6] 数组中最大值和最小值进行比较