力扣-两数之和

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

相关推荐
程序员-Benothing6 分钟前
Linux文本排序统计命令:sort、uniq、wc、cut、tr实战
java·开发语言·算法
开发者联盟league8 分钟前
c++11 使用chrono库转换时间点和字符串,计算时间点间隔
java·c++·算法
老歌老听老掉牙41 分钟前
两个平面旋转平移坐标系间的坐标变换关系
python·算法·平面·旋转·平移
W.A委员会44 分钟前
PID与PID整定
python·算法
冷雨夜中漫步1 小时前
YOLO快速入门——(2)YOLO V26安装与快速入门
图像处理·算法·yolo·计算机视觉
longlongzihan1 小时前
LeetCode 41. 缺失的第一个正数:从基础解法到原地哈希
c++·算法·leetcode
Omics Pro1 小时前
强生:以机理为中心!虚拟细胞世界模型
数据库·人工智能·python·深度学习·算法·机器学习·自然语言处理
FPGA信号处理1 小时前
【凸优化】第一节课(下):保凸运算、分离超平面与 Farkas 引理
人工智能·算法·机器学习
怕浪猫2 小时前
Agent 的记忆系统怎么设计?面试官想听的是这个
算法·面试·github
C++ 老炮儿的技术栈2 小时前
C++ const 的3个核心作用
服务器·c语言·c++·算法·c