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

    }
}
相关推荐
Cg136269159743 小时前
多态的定义
java·开发语言
云霄IT3 小时前
新版电脑微信4.1.x.x小程序逆向之——寻找小程序存放位置目录和__APP__.wxapkg
java·微信·小程序
微信api接口介绍3 小时前
微信社群管理开发
java·开发语言·网络·微信
前端小刘哥3 小时前
超越“接收端”:解析视频推拉流EasyDSS在RTMP推流生态中的核心价值与中流砥柱作用
算法
前端小刘哥3 小时前
新版视频直播点播平台EasyDSS用视频破局,获客转化双提升
算法
海琴烟Sunshine3 小时前
leetcode 168. Excel 表列名称 python
python·算法·leetcode
「QT(C++)开发工程师」4 小时前
C++语言编程规范-并发
java·linux·c++
Meteors.4 小时前
23种设计模式——迭代器模式 (Iterator Pattern)详解
java·设计模式·迭代器模式
自由的疯4 小时前
Java Jenkins+Docker部署jar包
java·后端·架构
自由的疯4 小时前
Java Jenkins、Dockers和Kubernetes有什么区别
java·后端·架构