前提
将数组循环右移k位
k=0 1 2 3 4 5
k=1 5 1 2 3 4
k=2 4 5 1 2 3
...
问题一
给一正常数组和数字k,返回循环右移k位的数组
方法很多,请看这篇文章。
问题二
有一升序数组,现循环右移了k位(k未知),求k的值。
方法一
暴力法,升序数组,找到不符合升序的位置即可。
int Fun(vector<int> &nums){
for(int i=1;i<nums.size();++i)
if(nums[i]<nums[i-1]){
return i;
}
return 0;
}
方法二
运用二分查找。高效,当然是最好了解法了。
int Fun(vector<int> &nums){
if(nums.size() == 0 || nums[0]<nums.back())
return 0;
int left = 0;
int right