题解 | #旋转位置的特定牛#

旋转位置的特定牛

https://www.nowcoder.com/practice/4872ba1fef224bd382b49a5958d996ab

考察知识点:二分

题目分析:

画图分析,可能会出现以下几种情况:

先根据中间的数与数组中索引为0的数进行比较,判断mid落在了左边还是右边。然后根据target相对于mid指向的数和索引为0的数进行比较,判断target落在了左边的梯形还是右边的梯形。每种情况对应的修改左边界和右边界即可。

所用编程语言:C++

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

全部评论

相关推荐

07-09 19:25
门头沟学院 Java
这是要把每一个投校招的都开盒吗?
26届之耻将大局逆转:裁人的时候一次性追回餐费
点赞 评论 收藏
分享
程序员小白条:这比例牛逼,750:1
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务