题解 | #旋转位置的特定牛#
旋转位置的特定牛
https://www.nowcoder.com/practice/4872ba1fef224bd382b49a5958d996ab
考察的知识点:数组、二分查找;
解答方法分析:
- 判断target是否小于或等于nums[0]。如果满足条件,则从头部向后搜索;否则,从尾部向前搜索。
- 从头部向后搜索,通过一个for循环遍历整个数组nums,从索引0开始递增,直到数组的大小。在每个循环中,使用条件语句判断当前元素nums[i]是否与目标值target相等。如果相等,则返回当前下标i。
- 从尾部向前搜索,通过一个for循环遍历整个数组nums,从数组的末尾索引nums.size()-1开始递减,直到0。在每个循环中,使用条件语句判断当前元素nums[j]是否与目标值target相等。如果相等,则返回当前下标j。
- 如果在两个for循环结束后都没有找到与目标值相等的元素,则返回-1。
所用编程语言:C++;
完整编程代码:↓
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param target int整型 * @return int整型 */ int search(vector<int>& nums, int target) { if (target <= nums[0]) { for (int i = 0; i < nums.size(); i++) { if (target == nums[i]) return i; } } else { for (int j = nums.size() - 1; j >= 0; j--) { if (target == nums[j]) return j; } } return -1; } };