1. Two Sum

思路是用 HashMap 保存 <元素, 下标>。
遍历数组,对于每个元素nums[i],先找 HashMap中是否已经有target - nums[i] 存在( HashMap.containsKey(key) ),存在则返回结果(下标组成的长为2的数组)。不存在则保存<nums[i], i>, 即 <元素, 下标>。
题目规定每个 target 只有 exactly one solution。

public class Solution 
{
    public int[] twoSum(int[] nums, int target)
    {
        if(nums == null || nums.length < 2)
            return new int[2];
        HashMap<Integer, Integer> hm = new HashMap<>();
        for(int i = 0; i < nums.length; i++)
        {
            int key = target - nums[i];
            if(hm.containsKey(key))
                return new int[]{hm.get(key), i};
            hm.put(nums[i], i);
        }
        return new int[]{0, 0};
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容