力扣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 分钟前
AAAI 2026|全面发力!快手斩获 3 篇 Oral,12 篇论文入选!
前端·后端·算法
颜酱6 分钟前
前端算法必备:滑动窗口从入门到很熟练(最长/最短/计数三大类型)
前端·后端·算法
8***f3958 分钟前
Spring容器初始化扩展点:ApplicationContextInitializer
java·后端·spring
做科研的周师兄8 分钟前
【MATLAB 实战】栅格数据 K-Means 聚类(分块处理版)—— 解决大数据内存溢出、运行卡顿问题
人工智能·算法·机器学习·matlab·kmeans·聚类
X在敲AI代码9 分钟前
leetcodeD3
数据结构·算法
踩坑记录10 分钟前
leetcode hot100 560.和为 K 的子数组 medium 前缀和 + 哈希表
leetcode
r_oo_ki_e_14 分钟前
java22--常用类
java·开发语言
码农小韩16 分钟前
基于Linux的C++学习——循环
linux·c语言·开发语言·c++·算法
linweidong24 分钟前
C++ 中避免悬挂引用的企业策略有哪些?
java·jvm·c++
用户937611475816126 分钟前
并发编程三大特性
java·后端