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

牛群的位置排序

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

考察的知识点:数组、二分查找;

解答方法分析:

  1. 定义两个指针 left 和 right,分别指向数组的起始位置和末尾位置。
  2. 进入循环,计算中间位置 mid 的值。
  3. 如果中间位置的值等于目标值 target,则直接返回中间位置 mid
  4. 如果中间位置的值小于目标值 target,说明目标值应该在右侧部分,更新 left 为 mid + 1,继续二分查找。
  5. 如果中间位置的值大于目标值 target,说明目标值应该在左侧部分,更新 right 为 mid - 1,继续二分查找。
  6. 循环结束后,如果仍未找到目标值,返回 left 的值,即为目标值按顺插入的位置。

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param labels int整型vector
     * @param target int整型
     * @return int整型
     */
    int searchInsert(vector<int>& labels, int target) {
        int left = 0, right = labels.size() - 1;

        while (left <= right) {
            int mid = left + (right - left) / 2;

            if (labels[mid] == target) {
                return mid;
            } else if (labels[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }

        return left;
    }
};

全部评论

相关推荐

03-31 18:02
门头沟学院 Java
白日梦想家_等打包版:不要的哦佛给我
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务