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

    }
}
相关推荐
暮冬-  Gentle°几秒前
设计模式在C++中的实现
开发语言·c++·算法
2501_908329853 分钟前
实时音频处理C++实现
开发语言·c++·算法
dapeng28704 分钟前
移动语义与完美转发详解
开发语言·c++·算法
bbbb3657 分钟前
算法工程中的可扩展性与分布式实现方案的技术7
算法
Shining05967 分钟前
AI 编译器系列(六)《Stable Diffusion 在 InfiniTensor 推理框架中的适配与工程实践》
人工智能·算法·stable diffusion·大模型·图像生成·ai编译器·infinitensor
佩奇大王7 分钟前
P159 摆动序列
java·开发语言·算法
weixin_537590458 分钟前
《C程序设计语言》练习答案(练习1-7)
linux·c语言·算法
计算机学姐9 分钟前
基于SpringBoot的网吧管理系统
java·spring boot·后端·spring·tomcat·intellij-idea·mybatis
Boop_wu11 分钟前
[Java EE 进阶] SpringBoot 配置文件全解析:properties 与 yml 的使用(1)
java·spring boot·spring·java-ee
!停12 分钟前
C++基础入门(缺省参数,函数重载,引用)
开发语言·c++·算法