力扣-两数之和

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即可。

相关推荐
慢半拍iii5 小时前
数据结构——D/串
c语言·开发语言·数据结构·c++
怀旧,5 小时前
【数据结构】5. 双向链表
数据结构·windows·链表
王景程5 小时前
什么是哈希函数
算法·哈希算法
会不再投降2195 小时前
《算法复杂度:数据结构世界里的“速度与激情”》
数据结构·算法
vvilkim5 小时前
深入解析 Pandas 核心数据结构:Series 与 DataFrame
数据结构·pandas
Frankabcdefgh5 小时前
Python基础数据类型与运算符全面解析
开发语言·数据结构·python·面试
kaiaaaa5 小时前
算法训练第十五天
开发语言·python·算法
Coovally AI模型快速验证6 小时前
SLAM3R:基于单目视频的实时密集3D场景重建
神经网络·算法·3d·目标跟踪·音视频
Once_day6 小时前
代码训练LeetCode(29)最后一个单词的长度
算法·leetcode·c
凌肖战6 小时前
力扣上C语言编程题:最大子数组和(涉及数组)
c语言·算法·leetcode