力扣-两数之和

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).利用单调性移动双指针

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

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

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

相关推荐
啊吧怪不啊吧34 分钟前
C++之初识模版
开发语言·数据结构·c++
YKPG38 分钟前
C++学习-入门到精通-【7】类的深入剖析
c++·学习·算法
vivo互联网技术1 小时前
vivo官网APP首页端智能业务实践
前端·深度学习·算法
JK0x071 小时前
代码随想录算法训练营 Day49 图论Ⅰ 深度优先与广度优先
算法·深度优先·图论
刚入坑的新人编程1 小时前
高阶数据结构——红黑树实现
数据结构
maozexijr2 小时前
Flink的时间问题
javascript·算法·flink
LDG_AGI2 小时前
【深度学习】多目标融合算法(六):渐进式分层提取模型PLE(Progressive Layered Extraction)
人工智能·深度学习·神经网络·算法·机器学习·推荐算法
奔跑的废柴2 小时前
LeetCode 925. 长按键入 java题解
java·算法·leetcode·双指针
姬公子5212 小时前
leetcode hot100刷题日记——7.最大子数组和
c++·算法·leetcode
闻缺陷则喜何志丹2 小时前
【回溯 剪支 状态压缩】# P10419 [蓝桥杯 2023 国 A] 01 游戏|普及+
c++·算法·蓝桥杯·剪枝·回溯·洛谷·状态压缩