LeetCode-第一题:Two Sum

题目

题目

题目的意思是在一个整形数组中查找连个数字,使其和等于给定的目标。并返回给出这两个数出现的位置。

分析

初读题目会想到直接使用两层遍历的办法,但是一到两层遍历就会时间复杂度增加。其实可以考虑使用映射的方法,将映射的键设置为值,将映射的值设置为该值在映射中出现的位置。这样做的目的在于映射的查找时间为常数,查找到数的位置相当快,具体的逻辑见代码。

代码

下面的代码表示使用双层循环得到的答案。

public int[] twoSum(int[] nums, int target)
{
    int arraySize=nums.length;
    for(int i=0;i<arraySize;i++)
    {
        for(int j=i+1;j<arraySize;j++)
        {
            if(nums[i]+nums[j]==target)
            {
                int[] result={i,j};
                return result;
            }
        }
    }
    return null;
}

下面的代码表示使用映射结构实现的代码。

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

推荐阅读更多精彩内容

  • 一、题目说明 Given an array of integers, return indices of the ...
    Diffey阅读 5,104评论 4 3
  • title: Leet Code TwoSumdate: 2017-07-08 23:18:54tags:- Le...
    杨柳岸小鹏残月阅读 490评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 昨天与领导一起,跟合作伙伴吃饭,算是对此次考察工作的慰劳。吃饭就免不了要喝酒,同事老李作为老板的代表,安排并陪同我...
    D088_long_深圳阅读 106评论 0 0
  • 真是让人感到无比的开心和灿烂的阳光,种那么多菜也可以美美吃一顿。有阳光啊,又有美食,真是一举两得啊! 好了,...
    小猜仔阅读 413评论 0 0