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

    }
}
相关推荐
村口曹大爷5 分钟前
JDK 24 正式发布:性能压轴,为下一代 LTS 铺平道路
java·开发语言
1.14(java)8 分钟前
MySQL数据库操作全攻略
java·数据库·mysql
副露のmagic8 分钟前
更弱智的算法学习 day13
学习·算法
正远数智27 分钟前
深度解析:SRM系统如何赋能采购库存协同
java·lowcode
青岛少儿编程-王老师30 分钟前
CCF编程能力等级认证GESP—C++1级—20251227
java·c++·算法
Sylus_sui39 分钟前
git中如何从某次历史提交节点上创建一个新的分支
git·算法·哈希算法
nn在炼金1 小时前
大模型领域负载均衡技术
人工智能·算法·负载均衡
hashiqimiya1 小时前
java程序的并发
java·开发语言·python
.try-1 小时前
cssTab卡片式
java·前端·javascript
falldeep1 小时前
Pandas入门指南
数据结构·算法·leetcode·pandas