面试题:数组中子序列的个数

2019 年 6 月 26 日 七月在线实验室


数组中子序列的个数


题目描述:

给定一个数组a (可能包含相同的数),求它有多少个不同的子序列。

例如a={1,2,1,3} 。

子序列有 {1} {2} {3} {1,2} {1,3} {1,2} {1,1} {1,3} {2, 1} {2,3} {1,2,1} {1,2,3} {1,1,3} {2,1,3} 等。



分析与解法:

这个题本身不难,但是分析清楚不容易。

我们首先假设子序列可以为空——最后减1就好了。


假设dp[i]表示数列前i项构成的不同子序列的个数。

初值:

dp[0] = 1 因为只有一个空子序列。

我们现在考虑dp[i]。

(1) 

如果数列第i项在之前没有出现过,是一个新数

显然dp[i] = dp[i - 1] * 2

这是因为前(i-1)项的子序列本身,以及添加上第i项,都是一个子序列,这是比较容易的情况。

如果全是这样,人生就完美了……因为我们会推出dp[i] = 2 ^ i, 但还有讨厌的第二种情况。


(2)

如果第i项在之前出现过,假设j是它最近一次出现的位置,我们有0 < j < i 。

(注意i,j都是项数,或者说下标从1开始的)

那么我们直接乘以2,有些会重复。哪些重复了呢?


原来的前(j-1)项的子序列末尾添加上第j项和添加上第i项是一样的,就这些是重复的。

所以dp[j-1]是重复的。

此时 dp[i] = dp[i - 1] * 2 - dp[j - 1]

最后千万别忘记答案是dp[n] - 1因为我们考虑了空的子序列。

还有一种分析可以不考虑空的子序列,也是类似的。

 

就业班来了

依据个人情况定制化教学

名企面试官亲自辅导面试

让你“薪”满意足!

加送售价3299元的新VIP

[包未来一年在线课程和全年GPU]



间谍用GAN制造“红发美女”!潜入美国政坛,轻松钓政客


数学差,连机器学习都做不了吗?


阅读原文查看课程一起进步!
你在看吗?
登录查看更多
15

相关内容

数学上,序列是被排成一列的对象(或事件);这样每个元素不是在其他元素之前,就是在其他元素之后。这里,元素之间的顺序非常重要。
【2020新书】监督机器学习,156页pdf,剑桥大学出版社
专知会员服务
151+阅读 · 2020年6月27日
最新《自动微分手册》77页pdf
专知会员服务
100+阅读 · 2020年6月6日
最新《机器学习理论初探》概述
专知会员服务
46+阅读 · 2020年5月19日
Python数据分析:过去、现在和未来,52页ppt
专知会员服务
99+阅读 · 2020年3月9日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
356+阅读 · 2020年2月15日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
77+阅读 · 2020年2月3日
【强化学习】深度强化学习初学者指南
专知会员服务
179+阅读 · 2019年12月14日
L1和L2正则先验分别服从什么分布
七月在线实验室
11+阅读 · 2019年5月8日
树形结构为什么不需要归一化?
七月在线实验室
8+阅读 · 2019年4月30日
BAT机器学习面试1000题(721~725题)
七月在线实验室
11+阅读 · 2018年12月18日
BAT机器学习面试1000题(716~720题)
七月在线实验室
19+阅读 · 2018年12月17日
深度学习面试100题(第81-85题)
七月在线实验室
16+阅读 · 2018年8月6日
深度学习面试100题(第76-80题)
七月在线实验室
6+阅读 · 2018年8月3日
深度学习面试100题(第71-75题)
七月在线实验室
5+阅读 · 2018年8月2日
面试整理:关于代价函数,正则化
数据挖掘入门与实战
8+阅读 · 2018年3月29日
基础 | 一文轻松搞懂-条件随机场CRF
黑龙江大学自然语言处理实验室
16+阅读 · 2018年3月24日
BAT题库 | 机器学习面试1000题系列(第211~215题)
七月在线实验室
9+阅读 · 2017年11月22日
Implicit Maximum Likelihood Estimation
Arxiv
7+阅读 · 2018年9月24日
Arxiv
6+阅读 · 2018年8月27日
Arxiv
3+阅读 · 2018年5月21日
Arxiv
6+阅读 · 2018年3月28日
VIP会员
相关VIP内容
【2020新书】监督机器学习,156页pdf,剑桥大学出版社
专知会员服务
151+阅读 · 2020年6月27日
最新《自动微分手册》77页pdf
专知会员服务
100+阅读 · 2020年6月6日
最新《机器学习理论初探》概述
专知会员服务
46+阅读 · 2020年5月19日
Python数据分析:过去、现在和未来,52页ppt
专知会员服务
99+阅读 · 2020年3月9日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
356+阅读 · 2020年2月15日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
77+阅读 · 2020年2月3日
【强化学习】深度强化学习初学者指南
专知会员服务
179+阅读 · 2019年12月14日
相关资讯
L1和L2正则先验分别服从什么分布
七月在线实验室
11+阅读 · 2019年5月8日
树形结构为什么不需要归一化?
七月在线实验室
8+阅读 · 2019年4月30日
BAT机器学习面试1000题(721~725题)
七月在线实验室
11+阅读 · 2018年12月18日
BAT机器学习面试1000题(716~720题)
七月在线实验室
19+阅读 · 2018年12月17日
深度学习面试100题(第81-85题)
七月在线实验室
16+阅读 · 2018年8月6日
深度学习面试100题(第76-80题)
七月在线实验室
6+阅读 · 2018年8月3日
深度学习面试100题(第71-75题)
七月在线实验室
5+阅读 · 2018年8月2日
面试整理:关于代价函数,正则化
数据挖掘入门与实战
8+阅读 · 2018年3月29日
基础 | 一文轻松搞懂-条件随机场CRF
黑龙江大学自然语言处理实验室
16+阅读 · 2018年3月24日
BAT题库 | 机器学习面试1000题系列(第211~215题)
七月在线实验室
9+阅读 · 2017年11月22日
Top
微信扫码咨询专知VIP会员