class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param target int整型 * @return int整型 */ int search(vector<int>& nums, int target) { // write code here // special case switch (nums.size()) { case 0: return -1; case 1: if(target==nums[0]) return 0; case 2: if(target==nums[0]) return 0; else if(target==nums[1]) return 1; else return -1; default: ; } // board case if(target<nums[0]) return -1; else if(target>nums[nums.size()-1]) return -1; // search int left = 0, right = nums.size() - 1, middle = nums.size() / 2; while (left < right) { if(left == right -1){ if(target==nums[left]) return left; else if (target==nums[right]) return right; else return -1; }else{ if(target==nums[middle]){ return middle; }else if(target>nums[middle]){ left = middle; }else{ right = middle; } middle = (left + right) / 2; } } return -1; } };