首页 > 编程语言 > 详细

两数之和【测试岗位常见算法题】

时间:2021-04-13 16:46:51      阅读:26      评论:0      收藏:0      [点我收藏+]

题目

1. 两数之和

给定1个整数数组,找目标值(2个数的和),返回其下标。

注意:数组中可存在重复的数字。

测试用例:
输入:nums = [3,3], target = 6
输出:[0,1]
输入:nums = [3,2,4], target = 6
输出:[1,2]
输入:nums = [2,7,11,15], target = 9
输出:[0,1]

思路

哈希表

将数组存在HashMap里,然后循环1次数组,计算后去找字典里的目标值。 O(n)
注意数组中重复的值,需要将i和index(map)进行对比,确定不是同一个值才进行返回。

哈希表法适合频繁去list里找某一个值的情况,将多次遍历list,变为去map里面查找,从而降低时间复杂度。

class Solution {
    public int[] twoSum(int[] nums, int target) {
        HashMap<Integer,Integer> numsMap = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if(numsMap.containsKey(target - nums[i])){
                int index = numsMap.get(target - nums[i]);
                if (index != i){
                    //说明不是同一个值
                    return new int[]{i, index};
                }
            }
            numsMap.put(nums[i], i);
        }
        return new int[]{};
    }
}

两数之和【测试岗位常见算法题】

原文:https://www.cnblogs.com/wfer/p/14652524.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!