C语言 ——— oj题:搜索插入位置

news2024/11/24 22:36:27

目录

题目要求

代码实现


题目要求

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置
请必须使用时间复杂度为 O(long n) 的算法

示例 1:

输入: nums = [1,3,5,6], target = 5
输出: 2

示例 2:

输入: nums = [1,3,5,6], target = 2
输出: 1

示例 3:

输入: nums = [1,3,5,6], target = 7
输出: 4

代码实现

代码演示:

int searchInsert(int* nums, int numsSize, int target)
{
	int left = 0;
	int right = numsSize - 1;
	int mid = 0;
	
	while (left <= right)
	{
		mid = (left + right) / 2;

		if (nums[mid] > target)
		{
			right = mid - 1;
		}
		else
		{
			left = mid + 1;
		}
	}

	return left;
}

代码解析:

题目要求时间复杂度为 O(long n) ,那么就要使用二查找法,每次去掉一半的值
创建 left 和 right 两个指针,依次往中间排除,while 循环结束后,left 的值就是要插入的 target 元素的下标

代码验证:

当 target 为最小值时:

当 target 为中间值时:

当 target 为最大值时:

算法的时间和空间复杂度:

while 循环是二分查找法,经典的 O(long n) ,且没有消耗额外的空间,得出:

时间复杂度:O(long n)

空间复杂度:O(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2212361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

golang包管理

package 在工程化的Go语言开发项目中&#xff0c;Go语言的源码复用是建立在包&#xff08;package&#xff09;基础之上的。本文介绍了Go语言中如何定义包、如何导出包的内容及如何导入其他包。 包与依赖管理 本章学习目标 掌握包的定义和使用掌握init初始化函数的使用掌握…

一、el-table的滚动条加粗并解决遮挡内容问题

近期接到产品提的需求&#xff0c;反馈用户说table里面的滚动条过小&#xff0c;不方便拖动&#xff0c;希望加粗&#xff0c;然后我就研究了下如何加粗&#xff0c;发现加粗后会导致遮挡内容的问题&#xff0c;并予以解决。以下是实现和解决的方法和步骤。 先看看官网的滚动条…

[翻译]MOSIP 101

目录 Architecture Principles of MOSIP &#xff08;MOSIP架构原则&#xff09; MOSIP Functional Architecture&#xff08;MOSIP功能架构&#xff09; MOSIP Features&#xff08;MOSIP特点&#xff09; MOSIP Modules&#xff08;MOSIP模块&#xff09; MOSIP Logical…

manjaro kde 24 应该如何设置才能上网(2024-10-13亲测)

要在 Manjaro KDE 24 上设置网络连接&#xff0c;可以按照以下步骤进行设置&#xff0c;确保你能够连接到互联网&#xff1a; 是的&#xff0c;你可以尝试使用一个简单的自动修复脚本来解决 Manjaro KDE 中的网络连接问题。这个脚本将检查网络服务、重新启动 NetworkManager、…

R语言统计分析——相关图

参考资料&#xff1a;R语言实战【第2版】 相关系数矩阵是多元统计分析的一个基本方面。哪些被考察的变量与其他变量相关性很强&#xff0c;而哪些并不强&#xff1f;随着变量数的增加&#xff0c;这类问题将变得很难回答。相关图作为一种相对现代的方法&#xff0c;可以通过相关…

Node.js 中的 WebSocket 底层实现

WebSockets 是一种网络通信协议&#xff0c;可实现双向客户端-服务器通信。 WebSockets 通常用于需要即时更新的应用程序&#xff0c;使用 HTTP 之上的持久双工通道来支持实时交互&#xff0c;而无需持续进行连接协商。服务器推送是 WebSockets 的众多常见用例之一。 本文首先…

剖析DNS劫持攻击原理及其防御措施

DNS劫持可导致用户访问到虚假网站&#xff0c;还可能使攻击者获取用户的敏感信息或利用受感染的计算机进行其他恶意活动。了解清楚DNS劫持攻击的原理有助于我们提升安全意识&#xff0c;避免个人信息泄露及财产损失。 1. 基础概念 DNS劫持是一种网络攻击&#xff0c;通过修改域…

低代码开发技术:驱动MES系统创新与制造业数字化转型的融合之路

低代码开发与生产管理MES系统的融合&#xff0c;是当今制造业数字化转型的一个重要趋势。以下是对这一融合现象的详细分析&#xff1a; 一、低代码开发的概念与特点 低代码开发是一种通过图形化界面和预构建模块来简化应用程序开发过程的方法。它允许开发人员使用拖放组件和最…

MT1331-MT1340 码题集 (c 语言详解)

MT1341反比例函数 c 语言实现代码 #include <stdio.h>double f(double x) { return 1.0 / x; }double trapezoidal_integration(double a, double b, int n) {// computer step lengthdouble h (b - a) / n;// computer points valuedouble sum (f(a) f(b)) / 2.0;//…

linux的sed命令

学习链接 Linux文本处理器sed - B站视频 文章目录 学习链接基础介绍语法格式sed的处理过程sed的选项-n-e-f-r-i pattern的7种用法sed中的编辑命令详解p 打印d 删除a 行后追加i 行前追加r 行后追加指定文件内容w 行追加到其它文件中 替换操作s/pattern/strings/pattern/string/…

【AI论文精读4】RAG论文综述2(微软亚研院 2409)P2-问题定义

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI大项目】【AI应用】 P1 二、问题定义 数据增强的大语言模型&#xff08;LLM&#xff09;应用可以采取多种形式&#xff0c;从常见的基于领域特定数据的问答机器人&#xff0c;到复杂数据管道中的语义处理操作&#x…

AI工具在论文选题方面可以提供的帮助

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 在论文写作中&#xff0c;选题是决定研究质量和成果的关键步骤。随着人工智能技术的快速发展&#xff0c;AI工具在论文选题方面的应用逐渐受到关注。通过智能算法和大数据分析&#xff…

selenium安装

一、安装selenium 1&#xff0c;安装selenium -- 命令&#xff1a; pip install selenium -- 网络不稳的请换源安装&#xff1a; pip install selenium -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 二、安装chrome webdriver 1.查看谷歌浏览器版本 …

Excel:vba实现合并工作表(表头相同)

这个代码应该也适用于一些表头相同的工作表的汇总&#xff0c;只需要修改想要遍历的表&#xff0c;适用于处理大量表头相同的表的合并 这里的汇总合并表 total 是我事先创建的&#xff0c;我觉得比用vba代码创建要容易一下&#xff0c;如果不事先创建汇总表就用下面的代码&…

二十一、浮动(1 文本)

<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title></title> <style> img{ widows: 100px; float: left;/*脱离文档流*/ …

BUG调试记录:C++中有符号类型和无符号类型在自动补位时的差异

BUG调试记录&#xff1a;C中有符号类型和无符号类型在自动补位时的差异 昨天和同事一起干活的过程中&#xff0c;项目中一个函数的计算结果出现了问题&#xff0c;即使我们反复对照流程图并进行了一系列的手算也没有发现任何编码上的差错&#xff0c;在逻辑上整个函数的编写是完…

【C++入门(7)】string

一、与C语言的联系 C的string类其实是从C语言的字符串演变过来的&#xff0c;是STL中用于处理字符串的一个容器。 在C语言中&#xff0c;字符串是以 \0 为结尾的一串字符&#xff0c;为了便于操作&#xff0c;C语言标准库中也提供了不少str系列的库函数供人使用。但是这些库函…

Java生成图片_基于Spring AI

Spring AI 优势 过去&#xff0c;使用Java编写AI应用时面临的主要困境是没有统一且标准的封装库&#xff0c;开发者需自行对接各个AI服务提供商的接口&#xff0c;导致代码复杂度高、迁移成本大。如今&#xff0c;Spring AI Alibaba的出现极大地缓解了这一问题&#xff0c;它提…

vue3之生命周期钩子

Vue 组件实例生命周期 每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xff0c;挂载实例到 DOM&#xff0c;以及在数据改变时更新 DOM。在此过程中&#xff0c;它也会运行被称为生命周期钩子的函数&#xff0c…

基于Arduino的燃气泄漏检测系统与自动切断调节器

Arduino LPG燃气泄漏检测系统与自动切断调节器 引言 大家好&#xff0c;今天我要分享一个非常实用的项目——Arduino LPG燃气泄漏检测系统与自动切断调节器。这个项目的重要性不言而喻&#xff0c;因为燃气泄漏是一个严重的安全隐患。在厨房烹饪时&#xff0c;我们可能会忘记…