给定一个序列的元素,里面由数字或字符组成,可能有重复的值,如何求它的非空子集数目?

比如说有序列{1, 2, 3, 4},它的非空子集包括:

{{1}, {2}, {3}, {4}, {1,2}, {1,3}, {1,4}, {2,3}, {2,4},{3,4}, {1,2,3}, {1,2,4}, {1,3,4}, {2,3,4}, {1,2,3,4}}等15项,而空集并没有被统计在内。

再比如说有序列{a, b, c, d, d},它内部有重复的值,但因为集合是不可重复的,因此它的非空子集包括:

{{a}, {b}, {c}, {d}, {a,b}, {a,c}, {a,d}, {b,c}, {b,d},{c,d}, {a,b,c}, {a,b,d}, {a,c,d}, {b,c,d}, {a,b,c,d}},也是15项,重复的d被去掉了。

传统的求子集方法在这个问题上可能派不上用场,因为对性能有要求,序列的长度可能达到50甚至更多,如果用递归耗费的时间就太长了。

好在我们无须求子集具体的内容,单单只需要求数目,所以可以借助一个公式。

如果一个集合(注意不是序列),它有N个元素,那么,它就有2的N次方个子集。这个子集是包含空集和自身的,所以要求非空子集,就可以用2^N

- 1来计算。

好了,到这里,这个问题就可以划分为2个步骤:

1.对序列进行去重

2.利用公式来计算非空子集数目function estSubsets(arr) {

var hash = {};

for(var i=0;i

hash[arr[i]] = null;

}

arr = Object.keys(hash);

return Math.pow(2,arr.length) - 1;

}

求子集PHP,JavaScript求非空子集数目的实现方法相关推荐

  1. 求一段字符串内最长的非空子字符串的长度(实例)

    欢迎提问,一起解决 题目:求一段字符串内最长的非空子字符串的长度 解答方案 提升思考 怎么将字符 一起输出 优化思考 题目:求一段字符串内最长的非空子字符串的长度 示例: 输入:s = "b ...

  2. 求数组所有非空子序列的和

    算法思想:   对每一个数,可以选与不选,那么就可以得到所有的非空子序列的和. 例题: class Solution {typedef long long LL;typedef pair<LL, ...

  3. leetcode 求子集

    leetcode 78 – 求子集 双非普本想刷题,不会递归老是迷. 碰到乐扣求子集,不会做啊干着急. 题目描述(中等难度): 给你一个整数数组 nums ,数组中的元素 互不相同 .返回该数组所有可 ...

  4. 数字拆分问题算法回溯_回溯算法:求子集问题!

    给「代码随想录」一个星标吧! ❝ 认识本质之后,这就是一道模板题 通知:我将公众号文章和学习相关的资料整理到了Github :https://github.com/youngyangyang04/le ...

  5. 递归/回溯:Subsets II求子集(有重复元素)

    上一篇描述了针对数组中没有重复元素进行子集的求取过程递归/回溯:subsets求子集 但是当出现如下数组时: 例如: nums[] = [2, 1, 2, 2] 结果为: [[], [1], [1,2 ...

  6. 求阶乘的第一个非零数字_查找数字阶乘中的尾随零

    求阶乘的第一个非零数字 Problem statement: 问题陈述: Find the number of trailing zeros in n! (Where, n is the given ...

  7. 回溯---含有相同元素求子集

    含有相同元素求子集 90. Subsets II (Medium) For example, If nums = [1,2,2], a solution is:[[2],[1],[1,2,2],[2, ...

  8. JavaScript:实现按字典顺序查找给定字符串的所有不同的非空子序列算法(附完整源码)

    JavaScript:实现按字典顺序查找给定字符串的所有不同的非空子序列算法 /** Problem Statement: Find all distinct, non-empty subsequen ...

  9. 组合算法/全排列算法/求子集算法

    本文介绍组合算法,组合算法有很多,这里只介绍其中一种的两种形式. 全排列:全排列算法 组合:本文 子集算法:求子集算法 组合 leetcode实战:组合 给定两个整数 n 和 k,返回范围 [1, n ...

最新文章

  1. C语言判断挂科,并输出挂科学生的全部成绩!_只愿与一人十指紧扣_新浪博客
  2. 生信服务器 | 更改 CentOS/RHEL 6/7 中的时区
  3. linux系统下安装配置iSCSI教程
  4. 知乎高赞:本科生如何才能进入腾讯、阿里等一流互联网大厂?
  5. 数据结构:严蔚敏、殷人昆快速排序规则不同的疑问
  6. ssm中使用slf4g
  7. ofo运营方还款3574.62万元 你的押金还好吗?
  8. python groupby_用python自动生成全校学生成绩报告
  9. Leetcode 每日算法一题*****#495. 提莫攻击
  10. Android仿IOS有弹性ScrollView
  11. 百度区块链 xuperchain 如何剪枝 裁剪区块
  12. 网站性能提高之国外空间
  13. [f]class获取元素函数
  14. Windows XP刻录机不能刻盘显示函数不正确的解决办法
  15. Docker之nginx集群
  16. excel同时冻结首行和首列怎么操作
  17. java并发编程(三)--java中的锁(Lock接口和队列同步器AQS)
  18. python画成绩正态分布图_数据分析基础(1)——神奇的正态分布
  19. 一文了解啤酒、葡萄酒、黄酒的种类
  20. Android开发必知的maven-publish插件知识

热门文章

  1. NOAA网站气象台站数据下载教程
  2. 各种抠图动态图片_抠图动画
  3. 干货,分享!09-基于layui后台html模板!!!
  4. 【软考 系统架构设计师】嵌入式系统⑤ 嵌入式系统开发与设计
  5. python经典代码
  6. python分箱统计个数_使用python 计算百分位数实现数据分箱代码
  7. tortoise-orm连接多个数据库
  8. Google Earth Engine(GEE)批量下载不透水面数据
  9. python画魄罗代码_LOL:灵魂画师在这里!玩家手绘冰雪节魄罗
  10. Luatos学习:Air101点灯