[算法][力扣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[]{};
    }
}
相关推荐
蓝悦无人机7 分钟前
《Planning algorithms》读书笔记——第1章 引言
算法·读书笔记·规划算法·lavalle
Sagittarius_A*27 分钟前
分组密码基础(二):Feistel 结构与 DES 的设计思想
算法·信息安全·密码学·des·数论
青山木37 分钟前
Hot 100 --- 搜索插入位置
java·数据结构·算法·leetcode
alexwang2111 小时前
HDU 4348 详细题解
c++·算法·题解·hdu·主席树·可持久化数据结构·可持久化线段树
可编程芯片开发2 小时前
基于分段变步长搜索RMDCFT算法的天基雷达空间机动目标检测方法MATLAB仿真,对比RMDCFT算法
算法
2501_946736162 小时前
在线考试平台如何选型?从功能、优势与应用场景角度详解
大数据·人工智能·算法
天辛大师2 小时前
天心大师:不确定中锚定自我,AI生活的哲学命题
人工智能·算法·决策树·机器学习·生活·启发式算法
皓月斯语3 小时前
B2132 素数对
c++·算法·题解
星轨初途3 小时前
LeetCode 热题 100——day2 字母异位词分组
c++·算法·leetcode
happyprince4 小时前
篇1:整体观 · bitsandbytes项目全貌解读
人工智能·算法