力扣167.两数之和II-输入有序数组

复制代码
import java.util.HashMap;
//法1:哈希表
class Solution {
    public int[] twoSum(int[] numbers, int target) {
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        for(int i = 0; i < numbers.length; i++) {
            if (map.containsKey(target - numbers[i])) {
                return new int[] {map.get(target - numbers[i]) + 1, i + 1};
            } else {
                map.put(numbers[i], i);
            }


        }
        return new int[] {-1, -1};
    }
}
复制代码
//法2:双指针
class Solution {
    public int[] twoSum(int[] numbers, int target) {
        int l = 0;
        int r = numbers.length-1;
        // l不能取等于r,因为不能取重复的元素
        while(l<r){
            int sum = numbers[l]+numbers[r];
            if(sum == target){
                return new int[]{l+1,r+1};
            }else if(sum>target){
                r--;
            }else{
                l++;
            }
        }
        return new int[]{-1,-1};

    }
}
相关推荐
我要神龙摆尾6 分钟前
JAVA版本演进全揽:你使用的JDK停留在哪个版本
java
小O的算法实验室7 分钟前
2024年IEEE TII SCI1区TOP,面向动态多目标多AUV路径规划的协同进化计算算法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
Charlie_lll8 分钟前
力扣解题-88. 合并两个有序数组
后端·算法·leetcode
糖猫猫cc14 分钟前
Kite:两种方式实现动态表名
java·kotlin·orm·kite
菜鸡儿齐37 分钟前
leetcode-最小栈
java·算法·leetcode
雪人不是菜鸡37 分钟前
简单工厂模式
开发语言·算法·c#
岛雨QA44 分钟前
常用十种算法「Java数据结构与算法学习笔记13」
数据结构·算法
weiabc44 分钟前
printf(“%lf“, ys) 和 cout << ys 输出的浮点数格式存在细微差异
数据结构·c++·算法
铸人44 分钟前
大数分解的Shor算法-C#
开发语言·算法·c#
问好眼1 小时前
《算法竞赛进阶指南》0x01 位运算-3.64位整数乘法
c++·算法·位运算·信息学奥赛