【算法题】求重复数>1000的数字序列

已知一个有序数组A,从小到大排列,数组大小为n,数组中有重复数字,用最快的算法快速找出重复数>1000的数字序列。
大家的思路都是如何的?
#笔试题目#
全部评论
用哈希表吧,遍历并记录每个数字最早出现的位置。 然后再次遍历哈希表,如果两个数字出现位置插值大于1000,说明有一个数字重复了1000次以上,记录进去。 这样就是时间空间复杂度都是O(N)了
2 回复 分享
发布于 2021-08-17 14:07
循环数组如果遇到后边个和前边一样的直接跳到后边第1000位,如果还一样说明至少有1001个,假如序列,如果不一样中间的也不可能重复1001遍,直接从后边第1000个继续判断。菜鸟只能有这种思路,希望有大神分享思路
1 回复 分享
发布于 2021-08-05 22:37
直接On双指针的话是没有问题的,我们记录一个l记录一个r,r=l+999 判断两数是否相等,跑一遍就行 现在我们想如何优化 如果以l为起点的这个数不符合题意那么只有r这个位置的数符合提议 那么我们可以从l到r二分找第一个等于a[r]的数,然后以这个为起点继续搜 最多会搜2*n/1000次 二分2*n/1000次 因为如果你二分到的合法位置是l+1,那么下一次二分的下标就是r-1,两次跑的位置一定是1000 所以整体复杂度n/1000
点赞 回复 分享
发布于 2021-10-03 09:34

相关推荐

不愿透露姓名的神秘牛友
昨天 15:35
公务员 锡山 11k 本科211
offer求求哩:就是你天天乱花我们纳税人的钱是吧😆😆
点赞 评论 收藏
分享
kl_我是东山啊:《相关公司:阿里巴巴》
投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务