题解 | #两数之和# 借助HashMap 空间换时间

两数之和

https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f

import java.util.*;


public class Solution {
    /**
     * 
     * @param numbers int整型一维数组 
     * @param target int整型 
     * @return int整型一维数组
     */
    public int[] twoSum (int[] numbers, int target) {
        // 思路1 双层循环实现 效率偏低
        int[] res = new int[2];
        // for(int i = 0;i< numbers.length - 1;i++){
        //     int cur = numbers[i];
        //     for(int j = i + 1;j<numbers.length;j++){
        //         if(cur + numbers[j] == target){
        //             res[0] = i + 1;
        //             res[1] = j + 1;
        //         }
        //     }
        // }
        // 思路2 借助Hash表 一次循环实现 空间换时间
        HashMap<Integer,Integer> hash = new HashMap<>();
        for(int i = 0;i<numbers.length;i++){
            if(hash.containsKey(target - numbers[i])){
                res[0] = hash.get(target - numbers[i]) + 1;
                res[1] = i + 1;
            } else {
                hash.put(numbers[i],i);
            }
        }
        return res;
    }
}

全部评论

相关推荐

小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务