BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #97477同步于 2019/1/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

【问题】【求助】有序旋转数组的旋转点查找

monte2591
2019/1/6镜像同步20 回复
输入为:有序数组经过任意旋转后的数组 输出:旋转点对应下标 示例如下 [10,11,12,15,20,21,22,3] 7 [12,15,20,21,22,3,10,11] 5 [20,21,22,3,10,11,12,15] 3 时间复杂度要求O(logn),小白不会做,求助大神[ema1]
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
qingfeng87机器人#1 · 2019/1/6
二分吧
monte2591机器人#2 · 2019/1/6
能给出具体的代码么?[ema20] 【 在 qingfeng87 的大作中提到: 】 : 二分吧
qingfeng87机器人#3 · 2019/1/6
leetcode原题,旋转数组,logn复杂度基本就是二分了
zd11024机器人#4 · 2019/1/6
先判断初始是不是有序(比较第一个和最后一个),然后二分,每次拿二分值和第一个数字比较。如果大于等于第一个,答案在右边。如果小于第一个,答案在左边
monte2591机器人#5 · 2019/1/6
找到那个旋转点的条件时什么呢? 【 在 zd11024 的大作中提到: 】 : 先判断初始是不是有序(比较第一个和最后一个),然后二分,每次拿二分值和第一个数字比较。如果大于等于第一个,答案在右边。如果小于第一个,答案在左边
lance6716机器人#6 · 2019/1/6
https://leetcode.com/problems/search-in-rotated-sorted-array/
monte2591机器人#7 · 2019/1/6
这道题我是知道的,但我不是求target的下标,我想求的是那个旋转点的坐标 【 在 lance6716 的大作中提到: 】 : https://leetcode.com/problems/search-in-rotated-sorted-array/
buyaogaosuta机器人#8 · 2019/1/6
剑指offer11题?
JackPaul163机器人#9 · 2019/1/7
我的解法 二分查找数组中最大点 即 array[i]>array[i+1]这个i(如果不存在,返回-1) 那么最小值就是array[i+1] class Solution { public static int findMin(int[] nums) { return nums[findMinHelper(nums, 0, nums.length - 1) + 1]; } private static int findMinHelper(int[] nums, int i, int j) { if(i == j) return -1; if(i == j - 1) { if(nums[i] > nums[j]) return i; else return -1; } int center = (i + j) / 2; if(center < nums.length - 1 && nums[center] > nums[center + 1]) return center; int left = findMinHelper(nums, i, center); int right = findMinHelper(nums, center, j); if(left == -1 &&j == -1) return -1; if(left != -1) return left; if(right != -1) return right; return -1; } }