Leetcode 两数之和 Ⅱ - 输入有序数组
这段代码实现了在一个非递减排序的数组中找到两个数,使它们的和等于目标值的算法。算法使用了双指针技术,具体思想如下:
算法思想:
-
初始化指针:定义两个指针
left
和right
,分别指向数组的起始位置和末尾位置。left
从左向右遍历,right
从右向左遍历。 -
计算当前和:
- 在循环中,每次计算
numbers[left]
和numbers[right]
的和,记为sum
。
- 在循环中,每次计算
-
判断是否满足目标值:
- 如果
sum
等于目标值target
,则找到了符合条件的两个数,此时返回它们的索引(题目要求索引从1开始,所以要将数组下标left
和right
各加1)。 - 如果
sum
小于目标值target
,说明需要更大一点的数才能达到目标值,因此将left
指针向右移动一位,以增加sum
。 - 如果
sum
大于目标值target
,说明需要更小一点的数才能达到目标值,因此将right
指针向左移动一位,以减小sum
。
- 如果
-
返回结果:
- 如果在循环结束后没有找到符合条件的两个数,返回一个空数组(虽然根据题目描述,总会有一个解,因此这一步通常不会被执行)。
时间复杂度
该算法的时间复杂度是 (O(n)),因为每次循环中指针 left
或 right
都会向中间移动,最多需要遍历整个数组一次。
总结
此算法利用了数组的有序性,通过双指针逐步逼近目标值,避免了暴力解法的多重循环,从而提升了效率。
java solution
class Solution {public int[] twoSum(int[] numbers, int target) {int left = 0;int right = numbers.length - 1;int sum = 0;int[] result = new int[2];while(left != right) {sum = numbers[left] + numbers[right];if(sum == target) {result[0] = left + 1;result[1] = right + 1;return result;}else if(sum < target) {left++;} else {right--;}}return new int[] {}; }
}
相关文章:
Leetcode 两数之和 Ⅱ - 输入有序数组
这段代码实现了在一个非递减排序的数组中找到两个数,使它们的和等于目标值的算法。算法使用了双指针技术,具体思想如下: 算法思想: 初始化指针:定义两个指针 left 和 right,分别指向数组的起始位置和末尾位…...
多处理器一致协议(MSI)协议详细介绍
多处理器一致协议 MSI 协议详细介绍 #mermaid-svg-2lc6AxM2mRiND4C0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2lc6AxM2mRiND4C0 .error-icon{fill:#552222;}#mermaid-svg-2lc6AxM2mRiND4C0 .error-text{fill:…...
SSH实验5密钥登录Linuxroot用户(免密登录)
当用户尝试通过SSH连接到远程服务器时,客户端会生成一对密钥:公钥和私钥。公钥被发送到远程服务器,并存储在服务器的~/.ssh/authorized_keys文件中。而私钥则由客户端保管,不会传输给服务器。 在连接过程中,客户端使用…...
2024 网鼎杯 - 青龙组 Web WP
2024 网鼎杯 - 青龙组 WEB - 02 打开容器一个登录界面,随便输入账号密码可以进到漏洞界面 这里有一个发送给boss的功能,一眼xss 有三个接口:/flag 、/update 、/submit /flag :要求boss才能访问,/update …...
ORACLE 闪回技术简介
闪回技术是若干技术的集合 包含对数据库整体的闪回 对表的闪回 对事务的闪回 经典面试题面试题:简述Oracle数据库闪回技术? 1.闪回Oracle数据库 2.闪回表 3.闪回事务 数据库闪回 要想实现数据库闪回 1.必须配置数据库的恢复区 SQL> show parameter …...
【笔记】LLC电路工作频点选择 2-2 开关管与滤波压力
LLC谐振变换器稳态工作波形分析 - 知乎,上面这篇文的结论相较MPS那篇文章的结论更严格。我们分析一下它的频点选择为什么会更窄: 1. LLC电路模型 电流滞后的特性就是电路呈感性注意这里也是开关管ZVS开通。 2.工作循环的波形 iLm的波形,最终…...
【CUDA】认识CUDA
目录 一、CUDA编程 二、第一个CUDA程序 三、CUDA关键字 四、device管理 4.1 初始化 4.2 Runtime API查询GPU信息 4.3 决定最佳GPU CUDA C 编程指南CUDA C在线文档:CUDA C 编程指南 CUDA是并行计算的平台和类C编程模型,能很容易的实现并行算法。只…...
Linux(CentOS)yum update -y 事故
CentOS版本:CentOS 7 事情经过: 1、安装好CentOS 7,系统自带JDK8,版本为:1.8.0_181 2、安装好JDK17,版本为:17.0.13 3、为了安装MySQL执行了 yum update -y(这个时候不知道该命令的…...
AI绘画赚钱秘籍!掌握ai绘画赚钱技巧,开启副业新篇章,ai绘画赚钱实战指南!
AI绘画赚钱:方法与策略 一、引言 随着人工智能技术的日益发展,AI绘画作为新兴领域,正逐渐成为赚钱的新途径。本文将从多个角度探讨AI绘画赚钱的完整策略,帮助读者深入了解并把握这一领域的商机。 二、AI绘画赚钱的主要方式…...
HCIP-HarmonyOS Application Developer V1.0 笔记(四)
平板/折叠屏设计 自适应动态布局:相对拉伸、相对缩放、延伸布局 响应式动态布局:挪移布局、重复布局、瀑布布局 Sketch 插件 设计系统:提供了 HarmonyOS 设计语言中定义的视觉参数和设计资源文件。 控件库:按类别组织控件&…...
【前端】Svelte:组件封装与使用
在 Svelte 中,组件化是开发的核心理念。将页面的不同部分封装成独立组件,不仅可以提升代码的复用性,还能让项目的结构更加清晰。在本文中,我们将介绍如何创建、封装、引入和使用 Svelte 组件,帮助你快速上手 Svelte 的…...
STM32标准库-待机模式
1.1 STM32待机模式简介 STM32单片机具有低功耗模式,包括睡眠、停止和待机三种。 运行状态下,HCLK为CPU提供时钟。HCLK由AHB预分频器分频后直接输出得到。 低功耗模式选择需考虑电源消耗、启动时间和唤醒源。 睡眠模式停CPU不停外设时钟; 停止…...
【论文笔记】The Power of Scale for Parameter-Efficient Prompt Tuning
🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: The Power of Scale for P…...
几个docker可用的镜像源
几个docker可用的镜像源 💐The Begin💐点点关注,收藏不迷路💐 sudo rm -rf /etc/docker/daemon.json sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://d…...
Spring学习笔记_27——@EnableLoadTimeWeaving
EnableLoadTimeWeaving 1. 介绍 在Spring框架中,EnableLoadTimeWeaving 是一个注解,它用于启用加载时织入(Load-Time Weaving, LTW) LWT[Spring学习笔记_26——LWT-CSDN博客] 2. 场景 AOP:在Spring框架中…...
【数据分析】如何构建指标体系?
有哪些指标体系搭建模型?五个步骤教你从0开始搭建指标体系 一、企业指标体系搭建存在什么问题 许多企业在搭建数据指标体系时遇到了诸多难题,如问题定位不准确、数据采集不完整、目标不一致、报表无序、指标覆盖不全面以及报表价值未充分利用等。 1、…...
大数据程序猿不可不看的资料大全
随着大数据技术的发展,大数据程序猿在数据采集、处理、分析、存储等方面的技能需求不断增加。要在这个领域保持竞争力,系统性地学习和掌握大数据工具、技术架构和行业趋势是非常重要的。以下为您提供一份围绕大数据程序猿不可不看的资料大全…...
【架构设计常见技术】
EJB EJB是服务器端的组件模型,使开发者能够构建可扩展、分布式的业务逻辑组件。这些组件运行在EJB容器中,EJB将各功能模块封装成独立的组件,能够被不同的客户端应用程序调用,简化开发过程,支持分布式应用开发。 IOC …...
LLMs之MemFree:MemFree的简介、安装和使用方法、案例应用之详细攻略
LLMs之MemFree:MemFree的简介、安装和使用方法、案例应用之详细攻略 目录 MemFree的简介 1、MemFree的价值 2、MemFree 配备了强大的功能,可满足各种搜索和生产力需求 3、MemFree AI UI生成器功能 MemFree 安装和使用方法 1. 前端安装 2. 向量服务…...
Hive简介 | 体系结构
Hive简介 Hive 是一个框架,可以通过编写sql的方式,自动的编译为MR任务的一个工具。 在这个世界上,会写SQL的人远远大于会写java代码的人,所以假如可以将MR通过sql实现,这个将是一个巨大的市场,FaceBook就这…...
[C++] GDB的调试和自动化检测
文章目录 GDB基本使用1. bazel的debug过程2. line-tables-only的使用 Reference GDB基本使用 参考文档: https://zhuanlan.zhihu.com/p/655719314 1. bazel的debug过程 需要带--copt-g --copt-ggdb选项进行编译 // bazel build --stripnever --copt-g --copt-ggd…...
车机版 Android Audio 框架笔记
车机版Android Audio 框架涉及的知识点很多,在工作中涉及的功能板块也及其繁杂,后面我会根据工作中的一些实际遇到的实例,逐步拆解 Android Audio的知识点,这里从网上整理了一些思维导图,可以做为未来的一个研究方向&a…...
【NLP自然语言处理】深入解析Encoder与Decoder模块:结构、作用与深度学习应用
目录 🍔 Encoder模块 1.1 Encoder模块的结构和作用 1.2 关于Encoder Block 1.3 多头自注意力层(self-attention) 🍔 Decoder模块及Add & Norm模块 3.1 Decoder模块介绍 3.2 Add & Norm模块 3.3 位置编码器Positional Encoding 3.4 Decod…...
【JAVA EE】多线程、锁、线程池的使用
目录 创建线程 方法一:继承Thread类来创建一个线程类 方法二:实现Runnable,重写run 线程等待 获取当前线程引用 休眠当前线程 线程的状态 synchronized synchronized的特性 1、互斥 2、刷新内存 死锁 死锁的四个必要条件 避免死…...
云计算:定义、类型及对企业的影响
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 云计算:定义、类型及对企业的影响 云计算:定义、类型及对企业的影响 云计算:定义、类型及对企…...
大数据面试题--kafka夺命连环问
1、kafka消息发送的流程? 在消息发送过程中涉及到两个线程:一个是 main 线程和一个 sender 线程。在 main 线程中创建了一个双端队列 RecordAccumulator。main 线程将消息发送给双端队列,sender 线程不断从双端队列 RecordAccumulator 中拉取…...
【大模型】Spring AI Alibaba 对接百炼平台大模型使用详解
目录 一、前言 二、Spring AI概述 2.1 spring ai是什么 2.2 Spring AI 核心能力 2.3 Spring AI 应用场景 三、Spring AI Alibaba 介绍 3.1 Spring AI Alibaba 是什么 3.2 Spring AI Alibaba 核心特点 3.3 Spring AI Alibaba 应用场景 四、SpringBoot 对接Spring AI Al…...
Zabbix如何配置将信息发送到邮件
申请邮箱,下面以QQ邮箱为例 1.1登录邮箱后,点击设置->账号 1.2开启服务 1.3点击生成授权码(这里生成的授权码记得保存,后面要用到) 创建报警媒介类型 2.1点击管理/媒介/Email 2.2编辑 Email,这里配置的…...
jmeter常用配置元件介绍总结之前置处理器、测试片段
系列文章目录 安装jmeter jmeter常用配置元件介绍总结之前置处理器、测试片段 6.前置处理器6.1用户参数6.2取样器超时6.3.测试片段6.4JSR223 PreProcessor6.5.JDBC PreProcessor 6.前置处理器 在取样器请求之前执行的操作,优先级比取样器高,用来处理一些…...
Redis2:Redis数据结构介绍、通用命令、String类型、Key的层级格式
欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...
四川省住房和城乡建设厅网站是多少/推广的软件有哪些
间隙锁(next-key locking)是 MySQL 的 InnoDB 存储引擎的一种锁实现。 InnoDB采用MVCC来支持高并发,并且实现了四个标准的隔离级别。其默认级别是REPEATABLE READ(可重复读),并且通过间隙锁(nex…...
wordpress按钮切换内容/windows优化大师好吗
iOS开发之iPhone通过get和post方式请求asp.net webservice 这篇文章,我将通过一个简单的例子来展现iPhone通过get和post方式请求asp.net webservice。 webservice 1、创建一个webservice 2、在webconfig中启用http get 和http post。 <webServices><protoc…...
哈尔滨专业做网站公司/深圳建站公司
前言 说jvm的内存模型前先了解一下物理计算机的内存处理。 物理计算器上用户磁盘和cpu的交互,由于cpu读写速度速度远远大于磁盘的读写速度速度,所以有了内存(高速缓存区)。但是随着cpu的发展,内存的读写也跟不上cpu的…...
电子产品配件采购网站/视频号下载器手机版
Java并发编程:阻塞队列 在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方…...
电子商务平台管理/郑州seo外包服务
异步,相当于开个子线程去执行,不会阻塞主函数。JavaScript 常使用 setTimeout 来完成异步任务。 XMLHttpRequest 来完成异步网络请求。 Promise 是一个 ECMAScript 6 提供的类,目的是更加优雅地书写复杂的异步任务。 构造 Promise 现在我们…...
注册网站帐号注销/淘宝推广怎么做
我的简单jQuery的加载语句需要花费太多时间(50秒).没有服务器端问题,服务器的页面逻辑很简单.我也试过$.ajax,$.get甚至尝试使用ManualAJAX调用(XMLHttpRequest).以下是jQuery加载的示例.$(function() {$(#frmPrd).live(submit, function(event) {event.preventDefault();mUrl …...