avatar
s*d
1
EPI中的Variant 12.3.1:
一个按升序排序的整数数组A,里面可以有重复元素,找出任意一个这样的i,使得A[i]
=i, 如果不存在这样的i,返回-1.
没有重复元素的话比较简单,因为A[i]-i>=A[i-1]-(i-1), 这样可以binary search找
到0即可。
有重复元素的话,还能有logn的解法吗?
avatar
h*c
2
[100,100,100]
needs O(n)
avatar
h*c
3
发现不对,可以两边找
再议

【在 h**********c 的大作中提到】
: [100,100,100]
: needs O(n)

avatar
r*7
4
没看出来有没有重复元素有啥区别啊
如果A[i] > i则找右边,A[i] < i则找左边,有什么问题?

i]

【在 s****d 的大作中提到】
: EPI中的Variant 12.3.1:
: 一个按升序排序的整数数组A,里面可以有重复元素,找出任意一个这样的i,使得A[i]
: =i, 如果不存在这样的i,返回-1.
: 没有重复元素的话比较简单,因为A[i]-i>=A[i-1]-(i-1), 这样可以binary search找
: 到0即可。
: 有重复元素的话,还能有logn的解法吗?

avatar
h*c
5
log n

【在 r****7 的大作中提到】
: 没看出来有没有重复元素有啥区别啊
: 如果A[i] > i则找右边,A[i] < i则找左边,有什么问题?
:
: i]

avatar
s*d
6
>>如果A[i] > i则找右边,A[i] < i则找左边,有什么问题?
。。,这没有重复元素都不work
-2 0 1 3 6
A[2]=1 < 2,找左边?
关键问题是 有重复元素的时候 A[i] -i序列 不是递增的,在重复元素处会递减,
binary search找0就不work了
avatar
h*c
7
if we can prove a_i = i can happen at any position,
then log n is not possible.
So we can construct n arrays.
For the i-th array
a_i = i, any element less than a_i differ differ by -2 sequentially, bigger
differ by 2
You won't have ONE log n algorithm to deal with all the above mentioned
arrays.

i]

【在 s****d 的大作中提到】
: EPI中的Variant 12.3.1:
: 一个按升序排序的整数数组A,里面可以有重复元素,找出任意一个这样的i,使得A[i]
: =i, 如果不存在这样的i,返回-1.
: 没有重复元素的话比较简单,因为A[i]-i>=A[i-1]-(i-1), 这样可以binary search找
: 到0即可。
: 有重复元素的话,还能有logn的解法吗?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。