Leetcode(一):Two Sum
博客专区 > Ambitor 的博客 > 博客详情
Leetcode(一):Two Sum
Ambitor 发表于2年前
Leetcode(一):Two Sum
  • 发表于 2年前
  • 阅读 76
  • 收藏 0
  • 点赞 1
  • 评论 0
摘要: 越往基础和底层学习,就越发的发现数据结构和算法的魅力,这些曾经在大学时候极为讨厌的两门枯燥乏味的学科,想不到如今也会慢慢的开始喜欢,所以从今天开始试着刷刷Leetcode的题目,虽然上班后的时间并不宽松,但只要像写博文一样,坚持下来,哪怕一天刷一道题,或者几天刷一道题 我相信总有会让人欣慰的收获!

介绍

越往基础和底层学习,就越发的发现数据结构和算法的魅力,这些曾经在大学时候极为讨厌的两门枯燥乏味的学科,想不到如今也会慢慢的开始喜欢,所以从今天开始试着刷刷Leetcode的题目,虽然上班后的时间并不宽松,但只要像写博文一样,坚持下来,哪怕一天刷一道题,或者几天刷一道题 我相信总有会让人欣慰的收获!

对于Leetcode网上已经有很多出色的解题思想和博文,所以我写博客的更多初衷是为了自己养成学习中不断记录的习惯,也希望在以后忘记的时候可以拿出来翻翻看。

目的

Leetcode是国外的一个网站,提供算法、sql、shell性能的题库测试,基本上在国外的大公司都必须要求的门槛,现在算法题总共有343道题目,为了提高自身水平,我也尝试着学习学习,希望自己越来越厉害,哈哈,有兴趣的大家一起刷。还可以讨论讨论 交换思路。

Two Sum

  • 题目:

    Given an array of integers, return indices of the two numbers such that they add up to a specific target.

    You may assume that each input would have exactly one solution.

    Example:

    Given nums = [2, 7, 11, 15], target = 9,

    Because nums[0] + nums[1] = 2 + 7 = 9,

    return [0, 1].

    UPDATE (2016/2/13): The return format had been changed to zero-based indices. Please read the above updated description carefully.

  • 解题:new Map<Integer,Integer>(),迭代nums数组元素,检查当前Index元素是否在Map中,如果在返回value与当前Index的数组,如果不在使用target减去当前元素,然后把差放到map中(map.put(差,当前Index);

    public class Solution {

     public int[] twoSum(int[] nums, int target) {

        if(nums==null||nums.length==0)return null;
        Map<Integer,Integer> temp=new HashMap<Integer,Integer>();
        int[] result=new int[2];
        for(int i=0;i<nums.length;i++){
            int num=nums[i];
            if(temp.containsKey(num)){
                result[0]=temp.get(num);
                result[1]=i;
                return result;
            }
            int substract= target-num;
            temp.put(substract,i);
        }
        return null;
        }
    }
  • 复杂度:O(n)的时间,O(n)的内存

  • 测试结果:


  • 思维发散:大伙能举一反三的想到其他类似结果吗?

注:版权所有转载请注明出处http://my.oschina.net/ambitor/blog/662408,作者:Ambitor

共有 人打赏支持
粉丝 69
博文 28
码字总数 28201
×
Ambitor
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: