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

牛群的位置排序

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

知识点:二分查找

题目要求使用时间复杂度为 O(log n) 的算法。我们就需要使用二分法来查找对应数据,这道题的难点在于对于数组中不存在的元素target,我们如何找到该target应该插入的位置。如果不存在,应该找到它按顺序插入的位置,我们先假设left和right已经相等,此时,我们还并没有找到target,故我们应该在当前位置的下一个位置作为target的插入位置,即mid + 1,也就是最终left所处的位置。

Java题解如下

import java.util.*;


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

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 18:05
点赞 评论 收藏
分享
昨天 13:48
门头沟学院 C++
点赞 评论 收藏
分享
Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
07-01 23:23
郑州大学 Java
否极泰来来来来:牛客迟早有高三的
点赞 评论 收藏
分享
码农索隆:这种hr,建议全中国推广
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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