//我们的集合里面不允许有重复的元素
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] 数组中最大值和最小值进行比较