Leetcode-每日一题【剑指 Offer II 006. 排序数组中两个数字之和】

news/2025/2/19 17:31:16/

题目

给定一个已按照 升序排列  的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。

函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 0 开始计数 ,所以答案数组应当满足 0 <= answer[0] < answer[1] < numbers.length 。

假设数组中存在且只存在一对符合条件的数字,同时一个数字不能使用两次。

示例 1:

输入:numbers = [1,2,4,6,10], target = 8
输出:[1,3]
解释:2 与 6 之和等于目标数 8 。因此 index1 = 1, index2 = 3 。


示例 2:

输入:numbers = [2,3,4], target = 6
输出:[0,2]


示例 3:

输入:numbers = [-1,0], target = -1
输出:[0,1]

提示:

  • 2 <= numbers.length <= 3 * 104
  • -1000 <= numbers[i] <= 1000
  • numbers 按 非递减顺序 排列
  • -1000 <= target <= 1000
  • 仅存在一个有效答案

解题思路

1.题目要求我们找出数组中两个数满足相加之和等于目标数 target,因为数组是按照升序排序的,所以我们可以采用双指针来解决这个问题。

2.首先我们设置两个指针( i 和 j )i 从前往后遍历数组,j 从后往前遍历数组,利用一个while循环开始遍历,将 i 指针和 j 指针指向的两个元素进行相加,若相加的结果大于目标数target,那么我们就应该让 j 指针向前一位,因为数组是升序排序,只有 j 指针向前一位,才能使相加的结果减小。若相加的结果小于目标数 target,同理我们应该让 i 指针向后一位。直到相加结果等于目标数 target 我们就将 i 和 j 保存在数组里并将其返回。

代码实现

class Solution {public int[] twoSum(int[] numbers, int target) {int len = numbers.length;int i = 0;int j = numbers.length - 1;int[] arr = new int[2];while(i < j){if(numbers[i] + numbers[j] > target){j--;}else if(numbers[i] + numbers[j] < target){i++;}else{arr = new int[]{i,j};break;}}return arr;}
}

测试结果

 

 


http://www.ppmy.cn/news/993471.html

相关文章

黑客自学笔记(网络安全)

一、黑客是什么 原是指热心于计算机技术&#xff0c;水平高超的电脑专家&#xff0c;尤其是程序设计人员。但后来&#xff0c;黑客一词已被用于泛指那些专门利用电脑网络搞破坏或者恶作剧的家伙。 二、学习黑客技术的原因 其实&#xff0c;网络信息空间安全已经成为海陆空之…

提高电脑寿命的维护技巧与方法分享

在维护电脑运行方面&#xff0c;我有一些自己觉得非常有用的技巧和方法。下面我将分享一些我常用的维护技巧&#xff0c;并解释为什么我会选择这样做以及这样做的好处。 首先&#xff0c;我经常清理我的电脑内部的灰尘。电脑内部的灰尘会影响散热效果&#xff0c;导致电脑发热…

MyBatis缓存-提高检索效率的利器--二级缓存

文章目录 缓存-提高检索效率的利器缓存-官方文档二级缓存基本介绍二级缓存原理图 二级缓存快速入门快速入门注意事项和使用陷阱理解二级缓存策略的参数 四大策略如何禁用二级缓存mybatis 刷新二级缓存的设置 缓存-提高检索效率的利器 缓存-官方文档 文档地址: https://mybati…

【算法训练营】求最小公倍数+另类加法+走方格的方案数

7月31日 求最小公倍数题目题解代码 另类加法题目题解代码 走方格的方案数题目题解| 1 | 2 | 3 || 4 | 5 | 6 || 7 | 8 | 9 |代码 求最小公倍数 题目 点击跳转: 求最小公倍数 题解 最小公倍数 两数之积除以最大公约数&#xff0c;这里使用碾转相除法进行最大公约数的求解&am…

I.MX6ULL_Linux_驱动篇(41)platform设备驱动框架

我们在前面几章编写的设备驱动都非常的简单&#xff0c;都是对IO进行最简单的读写操作。像I2C、SPI、 LCD 等这些复杂外设的驱动就不能这么去写了&#xff0c; Linux 系统要考虑到驱动的可重用性&#xff0c;因此提出了驱动的分离与分层这样的软件思路&#xff0c;在这个思路下…

Linux之 centos、Ubuntu 安装常见程序

CentOS 安装 MySql 注意 需要有root权限 安装5.7版本 – 由于MySql并不在CentOS的官方仓库中&#xff0c;所以需要通过rmp命令&#xff1a; 导入MySQL仓库密钥 1、配置MySQL的yum仓库 配置yum仓库 更新密钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 安装…

quartus工具篇——fifo ip核

quartus工具篇——fifo ip核 1、简介 FPGA 中的 FIFO&#xff08;First-In, First-Out&#xff09;是一种常见的数据缓冲器&#xff0c;用于在不同的时钟域之间进行数据传输。FIFO 可以暂存一定数量的数据&#xff0c;并支持并行读取和写入操作&#xff0c;同时保持先进先出的…

SK5代理与网络安全:保障爬虫安全与效率的最佳选择

一、SK5代理和IP代理的概念及区别 SK5代理&#xff08;也称为socks5代理&#xff09;和IP代理是两种常见的代理技术。IP代理是通过代理服务器转发请求和响应&#xff0c;隐藏客户端的真实IP地址&#xff0c;从而实现匿名访问和绕过网络限制。SK5代理是一种特殊的代理协议&#…