求子集PHP,JavaScript求非空子集数目的实现方法
给定一个序列的元素,里面由数字或字符组成,可能有重复的值,如何求它的非空子集数目?
比如说有序列{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求非空子集数目的实现方法相关推荐
- 求一段字符串内最长的非空子字符串的长度(实例)
欢迎提问,一起解决 题目:求一段字符串内最长的非空子字符串的长度 解答方案 提升思考 怎么将字符 一起输出 优化思考 题目:求一段字符串内最长的非空子字符串的长度 示例: 输入:s = "b ...
- 求数组所有非空子序列的和
算法思想: 对每一个数,可以选与不选,那么就可以得到所有的非空子序列的和. 例题: class Solution {typedef long long LL;typedef pair<LL, ...
- leetcode 求子集
leetcode 78 – 求子集 双非普本想刷题,不会递归老是迷. 碰到乐扣求子集,不会做啊干着急. 题目描述(中等难度): 给你一个整数数组 nums ,数组中的元素 互不相同 .返回该数组所有可 ...
- 数字拆分问题算法回溯_回溯算法:求子集问题!
给「代码随想录」一个星标吧! ❝ 认识本质之后,这就是一道模板题 通知:我将公众号文章和学习相关的资料整理到了Github :https://github.com/youngyangyang04/le ...
- 递归/回溯:Subsets II求子集(有重复元素)
上一篇描述了针对数组中没有重复元素进行子集的求取过程递归/回溯:subsets求子集 但是当出现如下数组时: 例如: nums[] = [2, 1, 2, 2] 结果为: [[], [1], [1,2 ...
- 求阶乘的第一个非零数字_查找数字阶乘中的尾随零
求阶乘的第一个非零数字 Problem statement: 问题陈述: Find the number of trailing zeros in n! (Where, n is the given ...
- 回溯---含有相同元素求子集
含有相同元素求子集 90. Subsets II (Medium) For example, If nums = [1,2,2], a solution is:[[2],[1],[1,2,2],[2, ...
- JavaScript:实现按字典顺序查找给定字符串的所有不同的非空子序列算法(附完整源码)
JavaScript:实现按字典顺序查找给定字符串的所有不同的非空子序列算法 /** Problem Statement: Find all distinct, non-empty subsequen ...
- 组合算法/全排列算法/求子集算法
本文介绍组合算法,组合算法有很多,这里只介绍其中一种的两种形式. 全排列:全排列算法 组合:本文 子集算法:求子集算法 组合 leetcode实战:组合 给定两个整数 n 和 k,返回范围 [1, n ...
最新文章
- C语言判断挂科,并输出挂科学生的全部成绩!_只愿与一人十指紧扣_新浪博客
- 生信服务器 | 更改 CentOS/RHEL 6/7 中的时区
- linux系统下安装配置iSCSI教程
- 知乎高赞:本科生如何才能进入腾讯、阿里等一流互联网大厂?
- 数据结构:严蔚敏、殷人昆快速排序规则不同的疑问
- ssm中使用slf4g
- ofo运营方还款3574.62万元 你的押金还好吗?
- python groupby_用python自动生成全校学生成绩报告
- Leetcode 每日算法一题*****#495. 提莫攻击
- Android仿IOS有弹性ScrollView
- 百度区块链 xuperchain 如何剪枝 裁剪区块
- 网站性能提高之国外空间
- [f]class获取元素函数
- Windows XP刻录机不能刻盘显示函数不正确的解决办法
- Docker之nginx集群
- excel同时冻结首行和首列怎么操作
- java并发编程(三)--java中的锁(Lock接口和队列同步器AQS)
- python画成绩正态分布图_数据分析基础(1)——神奇的正态分布
- 一文了解啤酒、葡萄酒、黄酒的种类
- Android开发必知的maven-publish插件知识