【发布时间】:2011-06-18 12:11:21
【问题描述】:
我目前正在学习算法简介的考试,我遇到了一个我无法真正解决的问题,问题是:你有一个由 n 个整数组成的数组,前 m 个元素是偶数,并且其余元素是奇数。你需要写一个求m值的算法(求最后一个偶数的索引),时间复杂度为O(log m)。
我想做一些类似于二分搜索的事情,如果奇数则简单地向左移动,如果偶数则向右移动直到我找到偶数的索引并且他的下一个索引是奇数,但这件事在 O(log n) 和不是 O(log m)。
【问题讨论】:
我目前正在学习算法简介的考试,我遇到了一个我无法真正解决的问题,问题是:你有一个由 n 个整数组成的数组,前 m 个元素是偶数,并且其余元素是奇数。你需要写一个求m值的算法(求最后一个偶数的索引),时间复杂度为O(log m)。
我想做一些类似于二分搜索的事情,如果奇数则简单地向左移动,如果偶数则向右移动直到我找到偶数的索引并且他的下一个索引是奇数,但这件事在 O(log n) 和不是 O(log m)。
【问题讨论】:
从索引 1 开始,然后继续将索引加倍,直到找到一个奇数条目。这为您提供了时间 O(log m) 中 m 的上限。然后进行二分查找。
【讨论】:
m 的上限最多为2m,完全忘记了。再次抱歉:)