zoukankan      html  css  js  c++  java
  • LeetCode-35. Search Insert Position | 搜索插入位置

    题目

    LeetCode
    LeetCode-cn

    Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

    Example 1:
    Input: nums = [1,3,5,6], target = 5
    Output: 2
    
    Example 2:
    Input: nums = [1,3,5,6], target = 2
    Output: 1
    
    Example 3:
    Input: nums = [1,3,5,6], target = 7
    Output: 4
    
    Example 4:
    Input: nums = [1,3,5,6], target = 0
    Output: 0
    
    Example 5:
    Input: nums = [1], target = 0
    Output: 0
     
    Constraints:
    1 <= nums.length <= 104
    -104 <= nums[i] <= 104
    nums contains distinct values sorted in ascending order.
    -104 <= target <= 104
    

    题解

    题目为简单难度。

    解法一:暴力求解法

    使用for循环遍历nums数组,从下标0开始按个与目标值target进行对比,如果nums[i]>=target,说明目标值在数组所有元素之前,直接返回i即可;另一种情况就是目标值在数组所有元素之后,这时返回nums数组长度len(nums)即可。

    //Go
    func searchInsert(nums []int, target int) int {
        for i := 0;i <len(nums);i++ {
            if nums[i] >= target {
                return i
            }
        }
        
        return len(nums)
    }
    

    执行结果:

    leetcode:
    Runtime: 4 ms, faster than 88.29% of Go online submissions for Search Insert Position.
    Memory Usage: 3.1 MB, less than 100.00% of Go online submissions for Search Insert Position.
    
    leetcode-cn:
    执行用时:4 ms, 在所有 Go 提交中击败了90.15%的用户
    内存消耗:2.9 MB, 在所有 Go 提交中击败了100.00%的用户
    

    解法二:二分查找法

    //Go
    func searchInsert(nums []int, target int) int {
        low := 0
        high := len(nums) - 1
        for low <= high {
            // 下方写法为了防止数据溢出,如果先加在除以2 加完的值可能会大于INT_MAX,造成溢出 
            mid := low + (high - low) / 2
            guess := nums[mid]
            if guess == target {
                return mid //找到了,返回下标
            }
            if guess > target {
                high = mid - 1
            } else {
                low = mid +1
            }
        }
    
        return low //没找到
    }
    

    执行结果:

    leetcode-cn:
    执行用时:4 ms, 在所有 Go 提交中击败了90.15%的用户
    内存消耗:3 MB, 在所有 Go 提交中击败了56.60%的用户
    
    leetcode:
    Runtime: 8 ms, faster than 8.78% of Go online submissions for Search Insert Position.
    Memory Usage: 3.3 MB, less than 6.08% of Go online submissions for Search Insert Position.
    

    解法三:golang-sort.SearchInts

    解题时不推荐。

    //Go
    func searchInsert(nums []int, target int) int {
        return sort.SearchInts(nums, target)
    }
    

    执行结果:

    leetcode:
    Runtime: 4 ms, faster than 88.29% of Go online submissions for Search Insert Position.
    Memory Usage: 3.1 MB, less than 100.00% of Go online submissions for Search Insert Position.
    
    leetcode-cn:
    执行用时:4 ms, 在所有 Go 提交中击败了90.15%的用户
    内存消耗:3 MB, 在所有 Go 提交中击败了56.60%的用户
    
             
    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明。
        
    特此声明:所有评论和私信都会在第一时间回复。也欢迎园子里和园子外的大大们指正错误,共同进步。或者直接私信我 (^∀^)
        
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!

    您的资助是我最大的动力!
    金额随意,欢迎来赏!

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

    如果,想给予我更多的鼓励,求打

    本博客的所有打赏均将用于博主女朋友的化妆品购买以及养肥计划O(∩_∩)O。我是【~不会飞的章鱼~】!

    联系或打赏博主【~不会飞的章鱼~】!https://www.cnblogs.com/OctoptusLian/

  • 相关阅读:
    mysql分表和表分区详解
    CNN 文本分类
    基于深度学习的目标检测研究进展
    标注工具
    在Ubuntu登陆界面输入密码之后,黑屏一闪后,又跳转到登录界面
    R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理
    LeNet,AlexNet,GoogleLeNet,VggNet等网络对比
    nginx使用与配置入门指南
    CentOS 7上重新编译安装nginx
    酸汤肉沫豆腐
  • 原文地址:https://www.cnblogs.com/OctoptusLian/p/14401071.html
Copyright © 2011-2022 走看看