蓝桥杯 - 简单 - 工作协调
要求
解题
补充
1.差集的实现(difference
和 static difference
方法)
思路:
- 差集是指在集合 A 中存在但在集合 B 中不存在的元素。
- 在
static difference(a, b)
方法中,首先将集合a
转换为数组,以便能够对其中的元素进行遍历。 - 使用
filter
方法来筛选出所有在a
中但不在b
中的元素。具体做法是通过!b.has(item)
来检查item
是否存在于集合b
中。 - 最后,返回一个新的
XSet
,该集合包含了所有差集的元素。
2. 交集的实现(intersection
和 static intersection
方法)
思路:
- 交集是指在集合 A 和集合 B 中都存在的元素。
- 在
static intersection(a, ...bSets)
方法中,同样将集合a
转换为数组。 - 使用
filter
方法来筛选出所有在a
和所有其他集合bSets
中都存在的元素。这里使用了every
方法,确保每个集合it
都包含item
。 - 最后,返回一个新的
XSet
,该集合包含了交集的所有元素。
3. 并集的实现(union
和 static union
方法)
思路:
- 并集是指在集合 A 或集合 B 中至少存在的元素。
- 在
static union(a, ...bSets)
方法中,首先将集合a
转换为数组。 - 使用
forEach
遍历每个集合bSet
,并将其元素展开到a1
数组中。 - 使用扩展运算符将所有元素拼接起来,最终返回一个新的
XSet
,该集合包含了并集的所有元素。
4. 常用方法和属性扩展
在 XSet
类中可以考虑添加以下常用方法和属性,以增强其功能:
size()
: 返回集合的大小。
size() {
return this.size; // Set本身提供了size属性
}
isEmpty()
: 判断集合是否为空。
isEmpty() {
return this.size === 0;
}
toArray()
: 将集合转换为数组形式。
toArray() {
return [...this];
}
contains(item)
: 判断集合中是否包含某个元素。
contains(item) {
return this.has(item);
}
forEach(callback)
: 遍历集合中的每一个元素。
forEach(callback) {
super.forEach(callback);
}
总结
- 熟悉数组和对象的常用方法和属性,熟练运用;
- 解题理清思路。