【发布时间】:2013-04-23 12:19:00
【问题描述】:
我即将参加我的数据结构课程的考试。为了做好准备,我正在研究一些我在网上找到的基于算法的问题,但遇到了一个我似乎无法解决的问题。
你走进一个房间,看到一排 n 张卡片。每一个都有一个数字xi 写在上面,其中 i 的范围从 1 到 n。但是,最初所有的卡 面朝下。你的目标是找到一个局部最小值:也就是说,一张我的卡片 number 小于或等于它的邻居,xi-1 >= xi
我能想出的唯一解决方案基本上是将它们全部翻转并找到任何局部最小值。然而,挑战在于仅通过翻转 O(logn) 卡来做到这一点。
基本上,如果您看到卡片“7”,那么如果左边的卡片是“10”而右边的卡片是“9”,那么它就是局部最小值。这如何在登录时间内轻松完成?
任何帮助表示赞赏,谢谢。
【问题讨论】:
-
如果是在日志时间里,那建议你选择二分查找类型的解决方案,当你一直选择中心卡,然后根据值将剩余的卡向左或向右分割。
-
和这个问题本质上是一样的问题:stackoverflow.com/questions/12238241/…
-
@NarutSereewattanawoot 正是我想要的,谢谢。
标签: algorithm