美文网首页
实现自己的集合算法

实现自己的集合算法

作者: 一个栗 | 来源:发表于2021-08-15 17:14 被阅读0次
  • 给定一个集合,返回这个集合的所有子集

思路 1 - 位

  • 思路:这道题本质上就是元素选与不选的问题,于是我们想到用二进制来代表选与不选的情况。1代表这个元素已经选择,0代表这个元素没有选择,假如3个元素A B C,那么101就代表B没有选择,所以101代表的子集为AC
func getSubsetsOfSet<T>(set: Set<T>) -> Array<Set<T>> {
    let count = 1 << set.count
    let elements = Array(set)
    var subSets = Array<Set<T>>()
    for i in 0..<count {
        var subSet = Set<T>()
        for j in 0...elements.count {
            if ((i >> j) & 1) == 1 {
                subSet.insert(elements[j])
            }
        }
        subSets.append(subSet)
    }
    return subSets
}

思路 2 - 递归

  • 思路:如果只有一个元素,那么他的子集有 2 个,分别是本身和空集,然后在已经有1个元素的子集的基础上,第二个元素有2种选法,那就是加入到前面的子集里面或者不加入前面的子集里面,也就是选与不选的问题。而前面的子集一共有2个,对每一个子集都有来自于下一个元素的加入和不加入2种选法。那么就可以得出2个元素的子集一共有4个,依此类推,就可以得出 n 的元素所有子集(这里 n 个元素的子集一共有 2n 个,非空子集一共有 2n - 1 个)
思路 2 - 递归

相关文章

  • 实现自己的集合算法

    给定一个集合,返回这个集合的所有子集 思路 1 - 位 思路:这道题本质上就是元素选与不选的问题,于是我们想到用二...

  • java.day10

    集合的内容 集合框架 接口 实现 算法 collection 是所有集合接口的根接口,通用的集合操作 set 是不...

  • HashMap中为什么数组的长度为2的幂次方

    Java中HashCode算法详解 Java中的集合,比如HashMap/HashSet/HashTable在实现...

  • 2017年初BAT的JAVA面试题汇集

    Java基础● 集合类以及集合框架;HashMap与HashTable实现原理,线程安全性,hash冲突及处理算法...

  • Java面试题

    集合类以及集合框架 HashMap与HashTable实现原理,线程安全性,hash冲突及处理算法;Concurr...

  • 2017年末,腾讯,百度,华为,搜狗和滴滴面试题汇总

    Java基础 集合类以及集合框架;HashMap与HashTable实现原理,线程安全性,hash冲突及处理算法;...

  • 标准模板库STL

    容器:管理特定类型的对象的集合。 迭代器:迭代对象集合的元素。屏蔽了底层容器的实现。 算法:操作对象集合的元素,查...

  • Java 总结

    自己实现集合框架 (三): 单链表的实现 自己实现集合框架 (三): 单链表的实现基于 POI 封装 ExcelU...

  • 算法

      面对不同元素类型的集合和不同的集合类型,可能相同的一个算法的实现方式不止一个。  然而,泛型集合接口有一个很大...

  • 常用的集合

    集合的由来 集合框架接口特性 集合中的算法Interator (迭代器) 和Colletions 算法类,也ut...

网友评论

      本文标题:实现自己的集合算法

      本文链接:https://www.haomeiwen.com/subject/bmkovltx.html