奇安信2021校招笔试真题

1、无助的产品经理

【题目描述】

在某厂,产品经理同学的工作职责除了给开发同学提需求,还有一件极其重要的事:对产品运营数据做归因分析。

某天,该产品经理同学接到老板要求:根据在过去一段时间内产品的“每日活跃用户数”,统计出最长的增长总天数,也就是把保持增长势头(可以不连续)的天数抽出来,你可能会得到多个新序列,计算最长的那个序列的总天数。

我们把该产品自上线以来“每日的活跃用户数”,都按照顺序放入一个数组,比如:

[1,5,122,34,45,232,342,34],以这组数据为例,把其中所有的增长子序列罗列出来:

形成了

第一个子序列: [1,5,122]

第二个子序列:[34,45,232,342]

第三个子序列:[1,5,122,232,342]

第四个子序列:[1,5,34,45,232,342]

这四个序列,其中最长的是第四个,所以这个例子中,最长的增长总天数是:6

因为该产品上线时间有十几年了,产品同学数了1个小时,眼都数花了,最后只好放弃,她决定用请开发同学吃饭,来解决这个问题,你能帮帮她吗?

备注:

如果数据集中有多个“最长“增长序列,只需返回其长度即可。

输入样例:

[10,9,2,5,3,6,101,18]

输出样例:

4

说明:

最长增长的子序列为 [2,3,6,101] 或者 [2,5,6,101]或者[2,3,6,18]或者[2,5,6,18],所以返回长度 4
【解题思路】
本质上是最长连续序列问题,动态规划、哈希表。

【参考代码】
package main
func lengthOfLIS(nums []int) int {
    	if len(nums) == 0 {
		return 0
	}
	dp := make([]int, len(nums))
	for i := range dp {
		dp[i] = 1
	}
	max := 1
	for i := 1; i < len(nums); i++ { for j := 0; j < i; j+

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

如果你问:“什么时候你才真正觉得接近了秋招?” 那一定是:“收到牛客绿皮书那一刻” 连续六年, 整合各大名企秋招考题 只为做到校招届的【五年高考三年模拟】 20家大厂授权,本次公开 200页笔面试真题解析合集 4大互联网热门岗位 保姆级攻略—你的求职绿卡!

全部评论

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
点赞 评论 收藏
分享
offer多多的六边形战士很无语:看了你的博客,感觉挺不错的,可以把你的访问量和粉丝数在简历里提一下,闪光点(仅个人意见)
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务