首页 > 其他分享 >leetcode_35. 搜索插入位置

leetcode_35. 搜索插入位置

时间:2023-08-27 11:11:27浏览次数:45  
标签:return target nums int mid 35 插入 leetcode left

题目描述

35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

输入: nums = [1,3,5,6], target = 5
输出: 2
输入: nums = [1,3,5,6], target = 2
输出: 1
输入: nums = [1,3,5,6], target = 7
输出: 4
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/search-insert-position
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二分实现

和之前二分不同之处是多了一个元素可能不在列表中,需要按序插入返回对应位置,

Java 实现

    public int searchInsert(int[] nums, int target) {
        if (nums == null || nums.length == 0) {
            return 0;
        } else {
            int left = 0, right = nums.length - 1;
            while (left < right) {
                int mid = (right + left) / 2;
                if (nums[mid] == target) {
                    return mid;
                } else if (nums[mid] > target) {
                    right = mid;
                } else {
                    left = mid + 1;
                }

            }
            return left;
        }
    }

Python实现

def searchInsert1(nums: List[int], target: int) -> int:
    left, right = 0, len(nums)
    while left < right:
        mid = (left + right) / 2
        if nums[mid] == target:
            return mid
        elif nums[mid] > target:
            right = mid
        elif nums[mid] < target:
            left = mid + 1

    return left

暴力法

Java 实现 

    public int searchInsert_baoli(int[] nums, int target) {
        if (nums == null || nums.length == 0) {
            return 0;
        } else {
            for (int i = 0; i < nums.length; i++) {
                if (nums[i] >= target) {
                    return i;
                }
            }
            return nums.length;
        }
    }

Python 实现

def searchInsert_baoli(nums: List[int], target: int) -> int:
    if nums is None or len(nums) == 0:
        #判断是否需要及逆行运算
        return 0
    else:
        for i in range(len(nums)):
            #找到第一个大于等于目标值的索引-返回
            if nums[i] >= target:
                return i
        #最后一个位置:即数组大小
        return len(nums)

 

标签:return,target,nums,int,mid,35,插入,leetcode,left
From: https://www.cnblogs.com/wdh01/p/17497238.html

相关文章

  • B3635 硬币问题
    B3635硬币问题方法一:搜索#include<bits/stdc++.h>usingnamespacestd;intm;intdfs(intn){//求凑够n元的最小硬币数 if(n<=4&&n>=1)returnn; if(n>=5&&n<=9)returnn-4; if(n>=10&&n<=11)return12-n; ret......
  • LeetCode —— 排序
    148. 排序链表一般都用归并排序,因为是单向链表,其它排序算法根据下标找元素,向前遍历等都比较困难主函数流程是:如果head==null||head.next==nullreturnhead。因为 head.next==null即只有一个元素时,不用再划分了,而且一个元素本身也是有序的,所以返回就返回这一个元素......
  • Postgresql 批量插入命令COPY使用
    在很多场景下,我们经常会遇到将某个Excel或Csv文件中的数据,插入到Postgresql。对于这个需求,我们常规的处理办法就是将文件中的数据,按照文件表头名称转换成集合对象然后插入到数据库,当然这对于数据体量不大的文件而言,很显眼没有任何问题,但是如果数据体量一旦上来,将面临如下问题:将......
  • 【LeetCode回溯算法#12】二叉树的直径,树形dp的前置内容(使用dfs)
    二叉树的直径给你一棵二叉树的根节点,返回该树的直径。二叉树的直径是指树中任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root。两节点之间路径的长度由它们之间边数表示。示例1:输入:root=[1,2,3,4,5]输出:3解释:3,取路径[4,2,1,3]或......
  • 【LeetCode动态规划#17】知道秘密的人,维护多个dp数组
    知道秘密的人数在第1天,有一个人发现了一个秘密。给你一个整数delay,表示每个人会在发现秘密后的delay天之后,每天给一个新的人分享秘密。同时给你一个整数forget,表示每个人在发现秘密forget天之后会忘记这个秘密。一个人不能在忘记秘密那一天及之后的日子里分享......
  • LeetCode 463.岛屿的周长
    1.题目:给定一个 rowxcol 的二维网格地图 grid ,其中:grid[i][j]=1 表示陆地, grid[i][j]=0 表示水域。网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(......
  • Leetcode 228. 汇总区间
    1.题目描述给定一个无重复元素的有序整数数组nums。返回恰好覆盖数组中所有数字的最小有序区间范围列表。也就是说,nums的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于nums的数字x。列表中的每个区间范围[a,b]应该按如下格式输出"a-......
  • LeetCode 131. 分割回文串
    题目链接:LeetCode131.分割回文串题意:给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回s所有可能的分割方案。回文串是正着读和反着读都一样的字符串。解题思路:dfs算法的过程其实就是一棵递归树,所有的dfs算法的步骤大概有以下几步:找到中止条件:即......
  • LeetCode-26. 删除有序数组中的重复项(Java)
    这是我在51CTO博客开启的写作之路,第一次正式写博客记录我在LeetCode的刷题日,希望能帮助更多的小伙伴攻面自己心仪的公司offer。如下对于 LeetCode-26. 删除有序数组中的重复项,进行全面解析并小结解题思路,同学们请参考:1.题目描述给你一个 升序排列 的数组 nums ,请你 原地 删......
  • 代码随想录算法训练营第二十二天| 235. 二叉搜索树的最近公共祖先 701.二叉搜索树
      235. 二叉搜索树的最近公共祖先    卡哥建议:相对于 二叉树的最近公共祖先 本题就简单一些了,因为 可以利用二叉搜索树的特性。   题目链接/文章讲解:https://programmercarl.com/0235.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%B......