力扣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};

    }
}
相关推荐
愤豆1 分钟前
10-Java语言核心-JVM原理--字节码与执行引擎详解
java·jvm·python
周可温8412 分钟前
Transformer 深度理解与动手实现
算法
番茄去哪了4 分钟前
Retrofit框架调用第三方api
java·服务器·retrofit
扶摇接北海1765 分钟前
洛谷:B4488 [语言月赛 202602] 甜品食用
数据结构·c++·算法
直有两条腿9 分钟前
【机器学习】K-Means 算法
算法·机器学习·kmeans
xuhaoyu_cpp_java9 分钟前
XML学习
xml·java·笔记·学习
A923A10 分钟前
【洛谷刷题 | 第十天】
算法·洛谷·sprintf·sscanf
Mr_Xuhhh10 分钟前
LeetCode 热题 100 刷题笔记:数组与排列的经典解法
数据结构·算法·leetcode
爱丽_10 分钟前
AQS 的 CLH 同步队列:入队/出队、park/unpark 与“公平性”从哪来
java·开发语言·jvm
黄昏恋慕黎明11 分钟前
spring的IOC与DI
java·后端·spring