【发布时间】:2019-08-14 07:27:09
【问题描述】:
使用循环在具有重复项的旋转排序数组中查找枢轴点。尽管我在建议中找到了解决方案,但那是使用递归。我需要一个使用递归的解决方案。从过去的 12 小时开始,我一直被这个问题困扰。任何帮助将不胜感激。
到目前为止,我一直在尝试找到其周围的元素都大于元素本身的单元格。但它似乎不起作用。谁能告诉我哪里出错了。
int findPivot(vector<int>& nums)
{
int lo=0,hi=nums.size()-1,mid,n=nums.size();
while(lo<=hi)
{
mid = (lo+hi)>>1;
if(nums[(mid+1)%n] >= nums[mid] && nums[(mid-1+n)%n]>nums[mid])
return mid;
if(nums[mid]>nums[hi])
lo = mid+1;
else
hi = mid-1;
}
return 0;
}
但它似乎不适用于像 [3,1] 这样我得到 0、预期输出为 1 和 [1,1,3,1] 的情况 3 我得到 0。
【问题讨论】:
-
题外话:你不修改向量,所以引用应该是const。
-
你能解释一下这是怎么跑题的吗?
-
正确的 const-ness 并不能解决您所遇到的真正问题,所以...
-
你能帮我解释一下程序的逻辑吗?
-
还有答案吗?
标签: c++ arrays algorithm vector binary-search