(双指针) 剑指 Offer 57. 和为s的两个数字 ——【Leetcode每日一题】

news2024/11/16 0:05:17

❓ 剑指 Offer 57. 和为s的两个数字

难度:简单

输入一个递增排序的数组和一个数字 s,在数组中查找两个数,使得它们的和正好是 s。如果有多对数字的和等于 s,则输出任意一对即可。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[2,7] 或者 [7,2]

示例 2:

输入:nums = [10,26,30,31,47,60], target = 40
输出:[10,30] 或者 [30,10]

限制

  • 1 < = n u m s . l e n g t h < = 1 0 5 1 <= nums.length <= 10^5 1<=nums.length<=105
  • 1 < = n u m s [ i ] < = 1 0 6 1 <= nums[i] <= 10^6 1<=nums[i]<=106

💡思路:双指针

使用双指针,一个指针指向元素较小的值,一个指针指向元素较大的值。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。

  • 如果两个指针指向元素的和 sum == target,那么这两个元素即为所求;
  • 如果 sum < target,移动较小的元素 i++,使 sum 变大一些;
  • 如果 sum > target,移动较大的元素 j--,使 sum 变小一些。

🍁代码:(C++、Java)

C++

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        for(int i = 0, j = nums.size() - 1; i < j;){
            int sum = nums[i] + nums[j];
            if(sum == target) return {nums[i], nums[j]};
            else if(sum < target) i++;
            else j--;
        }
        return {};
    }
};

Java

class Solution {
    public int[] twoSum(int[] nums, int target) {
        for(int i = 0, j = nums.length - 1; i < j;){
            int sum = nums[i] + nums[j];
            if(sum == target) return new int[]{nums[i], nums[j]};
            else if(sum < target) i++;
            else j--;
        }
        return new int[2];
    }
}

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为数组的长度。
  • 空间复杂度 O ( 1 ) O(1) O(1)

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!

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

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

相关文章

1400*C. Strong Password

Example input 5 88005553535123456 2 50 56 123412341234 3 111 444 1234 4 4321 4321 459 2 49 59 00010 2 10 11output YES NO YES NO YES解析&#xff1a; 题目要求有一种密码不在数据库中即可&#xff0c;所以枚举每一位的所有可能的数字&#xff0c;记录这一位数字在数…

帆软 FineReport/FineBI channel反序列化漏洞分析

事件背景 热点漏洞 漏洞说明 1. 漏洞原理&#xff1a;FineReport/FineBI channel接口能接受序列化数据并对其进行反序列化。配合帆软内置CB链会导致任意代码执行。 2. 组件描述&#xff1a;FineReport是一款企业级报表设计和数据分析工具&#xff0c;它提供了丰富多样的组件…

教你轻松又简单的绘制地铁线路图

地铁是主要以地下运输为主的交通系统。其轨道通常在地下隧道内。其中&#xff1a;地铁线路中的M,L,S,R分别代表&#xff1a;MMetro地&#xff0c;LLight轻轨&#xff0c;SSuburb市郊铁路&#xff0c;Rrapid&#xff0c;快速铁路。地铁线路图则可以简单理解为地铁的运行路线轨道…

基于Java+SpringBoot+vue前后端分离足球青训俱乐部管理后台系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

【自动话化运维】Ansible常见模块的运用

目录 一、Ansible简介二、Ansible安装部署2.1环境准备 三、ansible 命令行模块3.1&#xff0e;command 模块3.2&#xff0e;shell 模块3.3&#xff0e;cron 模块3.4&#xff0e;user 模块3.5&#xff0e;group 模块3.6&#xff0e;copy 模块3.7&#xff0e;file 模块8&#xff…

Java阶段五Day15

Java阶段五Day15 文章目录 Java阶段五Day15分层其他依赖dao-apidao-implinfrustructuredomainadaptermain 测试整合项目main前台师傅功能luban-front配置师傅相关表格ER图ER练习案例鲁班表格ER关系&#xff08;非常重要&#xff09; 前台师傅接口——师傅入驻adapterdomaininfr…

【C语言】指针进阶(二)

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

使用xtcp映射穿透指定服务

使用xtcp映射穿透指定服务 管理员Ubuntu配置公网服务端frps配置service自启(可选) 配置内网服务端frpc配置service自启(可选) 使用者配置service自启(可选) 通过frp实现内网client访问另外一个内网服务器 管理员 1&#xff09;配置公网服务端frps2&#xff09;配置内网服务端…

2023年 React 最佳学习路线

CSS CSS JavaScript JavaScript TypeScript 目前没有找到比其他文档好很多的文档地址 可以先看官网 React 新版 React 官方文档无敌 React React-router-dom V5 V6 Webpack webpack Antd antd

基于贴花的热力图呈现方法参考

首先是热力图信息类&#xff1a; using System; using UnityEngine;[Serializable] public class HeatMapInfo {public Rect rect Rect.zero;public float pixelDensity 1;public float valBase 0;public float valRange 1;public PercentColor[] ribbon;//色带public Col…

关联分析-Apriori

关联分析-Apriori 1. 定义 关联分析就是从大规模数据中&#xff0c;发现对象之间隐含关系与规律的过程&#xff0c;也称为关联规则学习。 2. 相关概念 2.1 事务、项与项集 订单号购买商品0001可乐、薯片0002口香糖、可乐0003可乐、口香糖、薯片 以上面的订单为例&#xf…

一套流程6个步骤,教你如何正确采购询价

采购询价&#xff08;RFQ&#xff09;是一种竞争性投标文件&#xff0c;用于邀请供应商或承包商就标准化或重复生产的产品或服务提交报价。 询价通常用于大批量/低价值项目&#xff0c;买方必须提供技术规格和商业要求&#xff0c;该文件有时也称为招标书或投标邀请书。询价流…

客户问题解决平台-帮助与支持中心

在现代企业中&#xff0c;帮助与支持中心扮演着至关重要的角色。随着市场的竞争日趋激烈&#xff0c;客户对于产品和服务的期望也越来越高。因此&#xff0c;建立一个高效的客户问题解决平台是企业成功的关键之一。本文将探讨帮助与支持中心的作用&#xff0c;介绍其功能和优势…

Linux(二)--Linux基础命令

我们在前面学习的Linux命令&#xff0c;其实它们的本体就是一个个的二进制可执行程序。 和Windows系统中的.exe文件&#xff0c;是一个意思。 一.Linux的目录结构 Linux的目录结构是一个树形结构。 Windows系统可以拥有多个顶级目录&#xff0c;称之为盘符&#xff0c;如C盘&…

Journal of Information Security and Applications (JISA) 投稿经验分享

Journal of Information Security and Applications (JISA) 投稿经验分享 基本情况: 中科院三区 JCR Q2 2023影响因子&#xff1a;5.6 老牌信息安全类期刊 投稿经验&#xff1a; With editor 周期&#xff1a; 1-2个月&#xff0c;稍微有点慢 Under review 周期&#xff1a; 2…

Nautilus Chain 即将发行治理通证 NAUT ,生态发展进程加速

独特且优势明显的 Nautilus Chain 目前&#xff0c;行业内首个模块化底层 Nautilus Chain 已经上线主网&#xff0c;并且即将有超过 70 个应用原生部署在 Nautilus Chain 上。Nautilus Chain 本身是一个以 Layer3 为定位的区块链系统&#xff0c;其通过 Celestia 模块化底层来获…

C++初阶之一篇文章让你掌握string类(模拟实现)

string类模拟实现 1.为什么要模拟实现string2.string的模拟实现需要注意哪些问题3.经典的string类问题4.写时拷贝5.传统版写法的String类&#xff08;参考&#xff09;6.现代版写法的String类&#xff08;参考&#xff09;7.string类的模拟实现&#xff08;讲解&#xff09;7.1…

Vue基础-综合案例(基于vue2)

一、目标 能够知道如何使用vue-cli创建vue项目能够知道如何在项目中安装与配置element-ui能够知道element-ui中常见组件的用法能够知道如何使用axios中的拦截器能够知道如何配置proxy接口代理 二、目录 vue-cli组件库axios拦截器proxy跨域代理用户列表案例 vue-cli 1.什么…

浅谈密码学的由来

目录 1.什么是密码学 2.密码学的发展 3.密码学的应用 4.密码学未来的发展趋势 1.什么是密码学 密码学是关于安全通信的科学研究&#xff0c;它研究如何在敌对环境中保护通信的机密性、完整性和身份验证。密码学涉及使用各种算法和技术来加密和解密信息&#xff0c;以确保只有…

C++基础算法⑤——递推算法(昆虫繁殖 过河卒 Pell数列 上台阶 流感传染 移动路线)

递推掌握核心&#xff1a; 递推公式(规律)递推边界(初始化条件) 分析题目意思&#xff1a;如下图 递推式&#xff1a;a[n] a[n-1]a[n-2]; 递推边界&#xff1a;a[1]1 a[2]2 #include<iostream> using namespace std; long long a[100],x,y,z; int main(){ //昆虫繁衍…