一、二分查找
在不重复的有序数组中查找,返回下标,如果查找失败,返回-1。
解法:略。
class Solution
{
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @param target int整型
* @return int整型
*/
int search(vector<int> &nums, int target)
{
int start = 0;
int end = nums.size() - 1;
while (start <= end)
{
int mid = (start + end) / 2;
if (nums[mid] == target)
{
return mid;
}
else if (nums[mid] > target)
{
end = mid - 1;
}
else
{
start = mid + 1;
}
}
return -1;
}
};
二、旋转数组中的最小值
何为旋转数组:将非降序数组开始的若干个树搬到数组末尾。如[3 4 5 1 2]、[1 5 5 1]。
解法:略。
class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray)
{
int len = rotateArray.size();
int last = rotateArray[0];
for (int i = 1; i < len; i++)
{
int cur = rotateArray[i];
if (cur < last)
{
return cur;
}
}
return last;
}
};