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

    慢慢来才是最快的
  • 相关阅读:
    从“窃听门”事件解读手机Rootkit攻击
    一款好用的开源信息安全管理系统演示(视频)
    P1908-逆序对
    P1010-幂次方
    P1226-快速幂
    P1433-吃奶酪
    ACM模板——玄学逐字符输入输出
    P1434-滑雪
    P1118-数字三角形
    P1443-马的遍历
  • 原文地址:https://www.cnblogs.com/jongty/p/11653764.html
Copyright © 2011-2022 走看看