首页 > 其他分享 >力扣:搜索插入位置代码实现

力扣:搜索插入位置代码实现

时间:2024-10-10 19:49:57浏览次数:9  
标签:numsSize nums int 力扣 插入 搜索 数组 目标值 left

题目

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

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


 python实现

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        left, right = 0, len(nums) - 1
    
        while left <= right:
            mid = (left + right) // 2  # 计算中间位置
            if nums[mid] == target:
                return mid  # 找到目标值,返回索引
            elif nums[mid] < target:
                left = mid + 1  # 调整左边界
            else:
                right = mid - 1  # 调整右边界

        # 如果没有找到目标值,则此时 left 是目标值应插入的位置
        return left

C代码实现

#include <stdio.h>

// 二分查找函数
int search_insert(int* nums, int numsSize, int target) {
    int left = 0;
    int right = numsSize - 1;

    while (left <= right) {
        int mid = left + (right - left) / 2; // 防止(left + right)溢出

        if (nums[mid] == target) {
            return mid; // 找到目标值,返回索引
        } else if (nums[mid] < target) {
            left = mid + 1; // 目标值在右半部分
        } else {
            right = mid - 1; // 目标值在左半部分
        }
    }

    // 如果没有找到目标值,则此时 left 是目标值应插入的位置
    return left;
}

int main() {
    int nums[] = {1, 3, 5, 6};
    int numsSize = sizeof(nums) / sizeof(nums[0]);
    int targets[] = {5, 2, 7, 0};
    int targetsSize = sizeof(targets) / sizeof(targets[0]);

    for (int i = 0; i < targetsSize; ++i) {
        printf("Target %d should be at index: %d\n", targets[i], search_insert(nums, numsSize, targets[i]));
    }

    return 0;
}

标签:numsSize,nums,int,力扣,插入,搜索,数组,目标值,left
From: https://blog.csdn.net/weixin_44748012/article/details/142830794

相关文章

  • 06-蓝图实战(图书数据搜索与查询),编写get和post请求,同时应用WTForms参数验证
    需求:之前的路由请求格式,不是通用的请求格式,转化为get和post请求之后,可以通过request方法获取其中的参数参考格式 04-使用Flask框架实现POST和GET接口-马铃薯1-博客园(cnblogs.com)@web.route('/book/search/<q>')defsearch(q):pass 第三方插件库,WTForms......
  • 又一款windows搜索神器!非常实用的文件搜索工具,可以说很智能了(带私活源码)
     哈喽,大家好,今天为大家介绍一款文件搜索神器!Listary简介Listary是一款非常实用的搜索工具,它可以为“我的电脑”(资源管理器)添加许多智能命令,包括收藏文件夹、快速打开最近浏览的文件夹、快速显示/隐藏文件扩展名等功能。这些实用功能可以帮助你在日常收藏和整理文件时提高效......
  • 淘宝图片搜索商品数据api接口对接详细的描述和解释
    淘宝图片搜索商品数据接口是一项高级的API服务,它允许用户通过上传图片来搜索淘宝上的商品。这一功能依托于先进的图像识别技术,通过复杂的算法对上传的图片进行分析和处理,从而找到与图片相似的商品。以下是对该接口的详细描述和解释:主要功能、特点、优势主要功能:以图搜图......
  • 用Tessent工具给网表插入扫描链
    有时候我们现有的网表没有带scancell,但我们又想将其变成一个可扫描的网表,就可以用Tessent工具帮助我们实现。 插入扫描链的过程,一般是将电路的时序非扫描单元(如DFF)替换成时序扫描单元(如SDFF),同时添加一些必要的输入输出端口,再将这些时序扫描单元和输入输出端口连接起来,形成了扫......
  • 力扣1436. 旅行终点站 python
    给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i]=[cityAi,cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。题目数据保证线路图会形成一条不存在循环的线路,因此恰有......
  • JS刷力扣-链表【持续跟新】
    力扣的链表归类2.两数相加【链表+递归】前置知识:1.链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。2.链表的入口节点称为链表的头结点也就是head。leet......
  • 2024.10.09 力扣刷题 盛水最多的容器
    题目:这边是参考了B站UP主的思路进行了解答,采用双下标访问的方式进行。如果要水最多的话,一定是高的那端找低的那端,然后算出面积。如果是低的那端找高的那端,那本身下限就在自己身上,所以不从低的端固定不变。附上代码:intmaxArea(std::vector<int>&height){ if(height.empty......
  • SQL第15课——插入数据
    介绍利用SQL的insert语句将数据插入表中。15.1数据插入select是最常用的语句,但是还有3个常用的SQL语句,第一个就是insert,insert:用来将行插入(或添加)到数据库表。插入的3中方式:1.插入完整的行;2.插入行的一部分;3.插入某些查询的结果。15.1.1插入完整的行insert语法,要......
  • Elasticsearch 全文搜索
    全文搜索matchoperator提高精度minimum_should_match控制精度bool组合查询must必须匹配must_not必须不匹配should如果有must则表示没有必须匹配但有会更匹配,如果没有must则表示至少需要有一个匹配minimum_should_match控制多少个should需要匹配boost......
  • Elasticsearch 结构化搜索
    过滤器当进行精确查找时,我们会使用过滤器。term单值匹配terms多值匹配bool复合过滤器(must/must_not/should)range范围查询(gt/lt/gtq/lte)existsnull值查询使用constant_score以非评分模式进行查询。示例数据curl-XDELETE-H'Content-Type:application/json......