题解 | #牛群的位置排序#

牛群的位置排序

https://www.nowcoder.com/practice/87c81fa27b9a45c49ed56650dfa6f51b

知识点

二分

思路

已知数组升序,故对于target来说,可以使用二分查找插入的位置,此位置的数要么为target,要么是小于target的第一个数。

在二分前特判一下是否可能插在数组头前或者尾后即可

代码c++

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



    }
};
全部评论

相关推荐

05-14 09:24
青岛工学院 C++
点赞 评论 收藏
分享
06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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