力扣-两数之和

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

相关推荐
Chester_199912 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
裕晟资质规划13 小时前
武器装备科研生产单位保密资质申请方法论:条件模型与流程拆解
人工智能·算法
en.en..15 小时前
C语言 标准输入 / 输出缓冲区
算法
吃好睡好便好16 小时前
查找函数的使用
学习·算法·matlab·生活·查找函数
学习星球16 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
专注仿真17 小时前
Spring AI 实现智能对话系统项目指南
数据结构·spring·机器学习
靠沿18 小时前
贪心算法专题(二)
算法·贪心算法
间歇性努力持续性发呆的野生快乐选手18 小时前
高级数据结构:树状数组
数据结构
猎头南楼18 小时前
具身智能模型部署方向的能力要求与技术栈梳理
人工智能·深度学习·算法
啥都想学点的研究生19 小时前
一篇文章讲清楚:线性回归问题的求解——正规方程法
算法·机器学习·线性回归