力扣-两数之和

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

相关推荐
呃呃本15 小时前
算法题(贪心算法)
算法·贪心算法
听你说3215 小时前
不迷路、不重扫、不遗漏:库萨科技无人清扫车以空间智能领跑无人环卫赛道
人工智能·科技·算法·机器人
吃好睡好便好15 小时前
在Matlab中绘制三维直方图
开发语言·学习·算法·matlab·信息可视化
故事和你9116 小时前
洛谷-【图论2-2】最短路4
开发语言·数据结构·c++·算法·动态规划·图论
我爱cope16 小时前
【力扣hot100:239. 滑动窗口最大值】
算法·leetcode·职场和发展
XINVRY-FPGA16 小时前
XC7Z010-2CLG400I Xilinx Zynq-7000 FPGA
arm开发·嵌入式硬件·算法·fpga开发·硬件工程·dsp开发·fpga
承渊政道16 小时前
【贪心算法】(经典实战应用解析(四):分发饼干、最优除法、跳跃游戏、跳跃游戏Ⅱ、加油站)
数据结构·c++·算法·leetcode·贪心算法·动态规划·哈希算法
m0_6294947316 小时前
LeetCode 热题 100-----24.回文链表
数据结构·算法·leetcode·链表
爱怪笑的小杰杰16 小时前
Leaflet 实现轨迹拐角自动圆弧化:基于球面几何的高精度平滑算法
前端·javascript·算法·无人机
历程里程碑16 小时前
53 多路转接select
linux·开发语言·数据结构·数据库·c++·sql·排序算法