当前位置: 首页 > news >正文

【力扣】两数之和 II - 输入有序数组

力扣|两数之和 II - 输入有序数组

  • 【力扣】两数之和 II - 输入有序数组
    • ✌双指针快速入门
    • 💬两数之和 II - 输入有序数组问题
    • 🍵思路分析
    • ✍️ 算法实现

【力扣】两数之和 II - 输入有序数组

✌双指针快速入门

  1. 双指针
  • 从两端向中间迭代数组
  • 具体做法:一个指针从头部开始,而另一个指针从尾部开始,然后进行相反的运动(类似相遇问题)
  • 使用场景 : 经常在排序数组中使用
  1. 快慢指针
  • 两个指针的运动方向是相同的,而非相反(类似追击问题)

💬两数之和 II - 输入有序数组问题

给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。

以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。

你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。

你所设计的解决方案必须只使用常量级的额外空间

示例 1:
输入:numbers = [2,7,11,15], target = 9
输出:[1,2]
解释:27 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。

示例 2:
输入:numbers = [2,3,4], target = 6
输出:[1,3]
解释:24 之和等于目标数 6 。因此 index1 = 1, index2 = 3 。返回 [1, 3] 。

示例 3:
输入:numbers = [-1,0], target = -1
输出:[1,2]
解释:-10 之和等于目标数 -1 。因此 index1 = 1, index2 = 2 。返回 [1, 2]

🍵思路分析

通过问题描述发现,这是一个已经排好序的数组同时也是个查找问题,立马想到折半查找(不懂的可以看我之前的文章)的思想,需要注意的是,这里是返回两个值要加一

✍️ 算法实现

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

在这里插入图片描述

如果觉得对你有帮助的话:
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
👄 评论,你的意见是我进步的财富!

相关文章:

  • 懒人方案--半天搞定一个SpringBoot单体项目
  • 【JAVA数据结构】JAVA数据结构必备知识:泛型与包装类
  • 微服务项目:尚融宝(40)(核心业务流程:申请借款额度(3))
  • 将web前端项目部署到github,在hbuilderx中部署github中的项目、对Github加速
  • Pytorch优化器全总结(二)Adadelta、RMSprop、Adam、Adamax、AdamW、NAdam、SparseAdam
  • MFI不告诉你的秘密
  • 【RocketMq 系列】RocketMq 消息重试机制、死信队列
  • 该从什么角度思考npm、yarn与pnpm的区别
  • 分库分表一:ShardingSphere介绍和入门实战
  • Linux内存管理(三十一):页面回收总结
  • 微信小程序│ 游戏开发 │连连看游戏
  • Python每日一练(牛客数据分析篇新题库)——第34天:数据清洗
  • mysql为什么使用B+树
  • 爬虫学习笔记 -- 实战某电影网(lxml库版)
  • hive on spark下row_number()问题排查
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【技术性】Search知识
  • 【面试系列】之二:关于js原型
  • Angularjs之国际化
  • Bootstrap JS插件Alert源码分析
  • CentOS 7 修改主机名
  • Logstash 参考指南(目录)
  • Objective-C 中关联引用的概念
  • pdf文件如何在线转换为jpg图片
  • Python 基础起步 (十) 什么叫函数?
  • Sass Day-01
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • SQLServer之索引简介
  • 从零开始的无人驾驶 1
  • 大整数乘法-表格法
  • 关于 Cirru Editor 存储格式
  • 缓存与缓冲
  • 记一次和乔布斯合作最难忘的经历
  • 力扣(LeetCode)22
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 扑朔迷离的属性和特性【彻底弄清】
  • 思考 CSS 架构
  • 用jquery写贪吃蛇
  • 在electron中实现跨域请求,无需更改服务器端设置
  • # 计算机视觉入门
  • #1015 : KMP算法
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (11)MATLAB PCA+SVM 人脸识别
  • (14)Hive调优——合并小文件
  • (2)(2.10) LTM telemetry
  • (8)STL算法之替换
  • (bean配置类的注解开发)学习Spring的第十三天
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • .NET Core 成都线下面基会拉开序幕
  • .net core控制台应用程序初识
  • .net framework4与其client profile版本的区别