力扣-两数之和

1.题目描述

2.题目链接

LCR 006. 两数之和 II - 输入有序数组 - 力扣(LeetCode)

3.题目代码

java 复制代码
class Solution {
    public int[] twoSum(int[] numbers, int target) {
        int[]ret=new int[2];
        int left=0,right=numbers.length-1;
        while(left<right){
        if(numbers[left]+numbers[right]>target){
            right--;
        }
        else if(numbers[left]+numbers[right]<target){
            left++;
        }
        else{
            ret[0]=left;
            ret[1]=right;
            return ret;
        }
        }
        return ret;
    }
}

4.解题思路

这道题的解题思路也是用双指针来解决的。

1).定义双指针

我们定义指针left为数组的最左边,指针right是数组的最右边。

2).利用单调性移动双指针

numbersleft+numbersright>target 时,不等式要想成立左边就需要减小 ,而numbersleft已经是最小值 ,所以只能numbersright减小 ,也就是right--

numbersleft+numbersright<target 时,不等式要想成立左边就需要增大 ,而numbersright已经是最大值 ,所以只能numbersleft增大 ,也就是left++

numbersleft+numbersright=target 时,不等式成立,将left和right这两个元素下标填入结果数组ret中,返回ret即可。

相关推荐
KaMeidebaby1 天前
卡梅德生物技术快报|噬菌体筛选:技术实操:宽谱大肠杆菌噬菌体筛选全流程与性能验证方案
前端·人工智能·算法·数据挖掘·数据分析
Hillain1 天前
软件设计师设计模式
java·开发语言·经验分享·笔记·算法·设计模式·软考
战族狼魂1 天前
AI 量化交易完整学习路线(从零到实战)
人工智能·算法·chatgpt·大语言模型·ai提示词·ai工程化
SoftLipaRZC1 天前
数据结构入门:顺序表专题详解
数据结构
Frostnova丶1 天前
【算法笔记】数学知识
笔记·算法
吴可可1231 天前
AutoCAD 2016与2014二次开发关键差异
算法
雨白1 天前
哈希:以时间换空间的算法实战
算法
啦啦啦啦啦zzzz1 天前
数据结构:红黑树理论
数据结构·c++·红黑树
San813_LDD1 天前
[数据结构]LeetCode学习
数据结构·算法·图论