zoukankan      html  css  js  c++  java
  • LeetCode每日一题(四):搜索插入位置

    题目描述:
    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
    你可以假设数组中无重复元素。

    示例 1:
    输入: [1,3,5,6], 5
    输出: 2

    示例 2:
    输入: [1,3,5,6], 2
    输出: 1

    示例 3:
    输入: [1,3,5,6], 7
    输出: 4

    示例 4:
    输入: [1,3,5,6], 0
    输出: 0

    思路:
    二分查找的变体,正常二分查找,寻找不到返回的是-1,此题可以返回二分查找的left边界,即为插入地址。

    代码:

    class Solution {
    
        /**
         * @param Integer[] $nums
         * @param Integer $target
         * @return Integer
         */
        function searchInsert($nums, $target) {
            $left = 0;
            $right = count($nums);
            while($left<$right){
                $mid = floor($left+($right-$left)/2);
                if($target < $nums[$mid]){
                    $right = $mid;
                }elseif($target > $nums[$mid]){
                    $left = $mid+1;
                }else{
                    return $mid;
                }
            }
            return $left;
        }
    }

    执行用时:8 ms, 内存消耗:15.3 MB

    慢慢来才是最快的
  • 相关阅读:
    Hibernate关联映射
    mysql 外键约束
    巩固JavaSE基础--IDEA完成实战项目
    PHP--选择排序
    PHP--冒泡排序
    vscode调试单个PHP脚本文件
    Vscode下调试基于Homestead环境的Laravel框架
    Python Web开发
    Python之UDP编程
    Python之TCP编程
  • 原文地址:https://www.cnblogs.com/jongty/p/11653764.html
Copyright © 2011-2022 走看看