首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >你能用什么样的搜索算法来解决这个问题?

你能用什么样的搜索算法来解决这个问题?
EN

Stack Overflow用户
提问于 2022-04-29 18:57:46
回答 1查看 44关注 0票数 0

给出n个整数的数组A0…N∀i,0≤i

在我看来,这个问题限制了相邻元素之间的-difference或“距离”最多为1,但据我所知,这并不意味着数组是有序的,确实存在任意大小的子序列,它们可以遵循升序或降序,但正因为这个原因,我看不到使用算法搜索O(log )中的索引的明确方法。

我在想一些能满足这些限制的例子:

1,2,1,2

-1,0,1,1,2,1,1,1,3

4,5,6,7,8,9,10,12,13,13,13,12,11,10

4,3,2,1 0,1,2,3,4,5

我真的不知道我是否正确地理解了这个问题,:C.Could,有人给我一个提示吗?

EN

回答 1

Stack Overflow用户

发布于 2022-04-29 19:09:40

即使数组没有排序,您也可以类似于二进制搜索进行求解,方法是在中间签入(让它是m),然后:

  1. 如果z == m -你完成了。
  2. If z < m - 分治:检查自x <= z < m以来数组的前半部分
  3. 如果m < z -分而治之:检查自m < z <= y以来数组的下半部分

很容易通过使用每次迭代x <= z <= y中的不变量来证明这一点,并且算法保证结束(因为大小在缩小)--在x == z == y时给出一个有保证的结束(最多是)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72062591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档