浏览代码

添加两个slice求差集的函数

yjp 4 月之前
父节点
当前提交
23e95de952
共有 1 个文件被更改,包括 21 次插入0 次删除
  1. 21 0
      slice/slice.go

+ 21 - 0
slice/slice.go

@@ -72,3 +72,24 @@ func ExtractUnionValue[T comparable](aList, bList []T) []T {
 	cList = RemoveRepeatElement(cList)
 	return cList
 }
+
+func ExtractASubBSetValue[T comparable](aList, bList []T) []T {
+	aList = RemoveRepeatElement(aList)
+	bList = RemoveRepeatElement(bList)
+	cList := make([]T, 0)
+
+	// 使用 map 标记 bList 中的元素
+	tmpMap := make(map[T]struct{})
+	for _, item := range bList {
+		tmpMap[item] = struct{}{}
+	}
+
+	// 遍历 aList,将不在 bList 中的元素加入cList
+	for _, item := range aList {
+		if _, ok := tmpMap[item]; !ok {
+			cList = append(cList, item)
+		}
+	}
+
+	return cList
+}