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

    }
}
相关推荐
摸鱼仙人~4 分钟前
针对编程面试和算法题的基础书籍
算法·面试·职场和发展
大吱佬10 分钟前
八股速记(自用)
java
征尘bjajmd17 分钟前
Java使用okhttp发送get、post请求
java·服务器·数据库
程序编程- Java23 分钟前
三角洲行动-java游戏程序
java·游戏程序·安全架构·玩游戏
京东零售技术23 分钟前
一款AB实验分析智能体是如何诞生的
算法
陈佳梁24 分钟前
构造器(详解)
java·开发语言
麦烤楽鸡翅33 分钟前
【模板】二维前缀和 (牛客)
java·c++·算法·秋招·春招·二维前缀和·面试算法题
Mos_x1 小时前
集成RabbitMQ+MQ常用操作
java·后端
千弥霜1 小时前
codeforces1914 C~F
c语言·算法
wyiyiyi1 小时前
【数据结构+算法】进栈顺序推算、卡特兰数与逆波兰表达式
汇编·数据结构·笔记·算法