全部评论
用哈希表吧,遍历并记录每个数字最早出现的位置。 然后再次遍历哈希表,如果两个数字出现位置插值大于1000,说明有一个数字重复了1000次以上,记录进去。 这样就是时间空间复杂度都是O(N)了
循环数组如果遇到后边个和前边一样的直接跳到后边第1000位,如果还一样说明至少有1001个,假如序列,如果不一样中间的也不可能重复1001遍,直接从后边第1000个继续判断。菜鸟只能有这种思路,希望有大神分享思路
直接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
相关推荐
点赞 评论 收藏
分享
2024-11-30 22:25
北京理工大学 C++ 点赞 评论 收藏
分享
01-13 23:12
深圳信息职业技术学院 Java 点赞 评论 收藏
分享