[算法][力扣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[]{};
    }
}
相关推荐
Halo_tjn30 分钟前
Java 基于字符串相关知识点
java·开发语言·算法
念越1 小时前
算法每日一题 Day08|双指针法解决三数之和
算法·力扣
黎阳之光1 小时前
黎阳之光透明管理:视频孪生重构智慧仓储新范式
人工智能·算法·安全·重构·数字孪生
6Hzlia1 小时前
【Hot 100 刷题计划】 LeetCode 199. 二叉树的右视图 | C++ DFS 逆序遍历
c++·leetcode·深度优先
CappuccinoRose2 小时前
回溯法 - 软考备战(四十三)
算法·排列组合·路径·n皇后·子集·解数独·岛屿
AC赳赳老秦2 小时前
OpenClaw进阶技巧:批量修改文件内容、替换关键词,解放双手
java·linux·人工智能·python·算法·测试用例·openclaw
Robot_Nav3 小时前
Shape-Aware MPPI(SA MPPI)算法:基于RC-ESDF的任意形状机器人实时轨迹优化
算法·机器人·sa-mppi
踩坑记录3 小时前
leetcode hot100 118. 杨辉三角 easy 动态规划
leetcode·动态规划
小O的算法实验室4 小时前
2026年ESWA,自适应基于排序的协同进化学习粒子群算法+边缘计算服务器部署,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
cpp_25014 小时前
P1832 A+B Problem(再升级)
数据结构·c++·算法·动态规划·题解·洛谷·背包dp