[算法][力扣167]Two Sum II

给定一个有序整型数组和一个整数target,在其中寻找两个元素,使其和为target。返回这两个数的索引。

  • 如numbers = [2, 7, 11, 15], target = 9
  • 返回数字2, 7的索引1, 2 (索引从1开始计算)

思路一:使用暴力解法,两重for循环

思路二:对撞指针,即用两个指针,left = 0, right = length - 1从两边出发

target和两个指针的和(sum)对比,分三种情况

1、如果 sum == target,则成功找到目标数据

2、如果 sum > target,则right --

3、如果 sum < target,则left++

java 复制代码
public class Test02_167_001 {

    public static void main(String[] args) {
        int[] ret = twoSum(new int[]{2, 7, 11, 15}, 29);
        System.out.println(Arrays.toString(ret));
    }

    public static int[] twoSum(int[] arr, int target) {
        int left = 0;
        int right = arr.length - 1;
        while (left < right) {
            int sum = arr[left] + arr[right];
            if (sum == target) {
                return new int[]{left, right};
            } else if (sum < target) {
                left++;
            } else { // sum > target
                right--;
            }
        }
        return new int[]{};
    }
}
相关推荐
_深海凉_6 分钟前
LeetCode热题100-对称二叉树
算法·leetcode·职场和发展
瑞华丽PLM11 分钟前
瑞华丽工业软件研发效能全景展示
人工智能·算法·cae·工业软件·国产软件·瑞华丽plm·瑞华丽
Kiyra11 分钟前
Interview Agent:从面试平台到 Agent 工程实战的进化之路
面试·职场和发展
运筹vivo@14 分钟前
两数之和(leetcode)
算法·leetcode·职场和发展
吃好睡好便好21 分钟前
在Matlab中绘制二维等高线图
开发语言·人工智能·学习·算法·matlab
Mr_pyx26 分钟前
LeetCode Hot 100 - 最长递增子序列完全题解
算法·leetcode·职场和发展
Mr_pyx27 分钟前
LeetCode Hot 100 - 爬楼梯完全题解
算法·动态规划
z2005093032 分钟前
今日算法: 二叉搜索树
算法
蝈理塘(/_\)大怨种34 分钟前
快速排序的递归与非递归实现
数据结构·算法
吴可可12344 分钟前
用Bulge保持多段线圆弧连续性
算法·c#