LeetCode Two Sum 题库记录--代码小白开始码代码的人生,第一天!

原创 2015年07月10日 10:48:31

1. Two Sum

     服自己了,都不好意思说自己是搞java android开发的,连基本的java定义数组都不会!  int[] array=new int[5];

     返回值也不会,什么return/break/continue;

    踉踉跄跄用java实现了,可是完全不够优化,这就不是个好方法,暴力搜索,时间复杂度O(n*n); 如下

     public class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] Index = new int[2];   //java中定义数组都不会int[] array=new int[5];
        for(int i = 0;  i<nums.length; i++ )
        {
            for(int j=i+1; j<nums.length; j++)
            {
                if(nums[i] + nums[j] == target)
                {
                   // System.out.print("Index1 = "+ (i+1) + " , " + "Index2 =" + (j+1));
                    Index[0] = i+1;  //有可能满足这样要求的不止这一对。
                    Index[1] = j+1;
                    break;
                }
            }
        }
    return Index;
    }
}    时间复杂度O(n*n);     Runtime: 500 ms

     继续优化,能不能先对数组排序,并记录排序候在原数组的位置,这样来进行后面的操作后更省事省时。但是有个问题是,返回的要求是Index1 >Index2,所以考虑这种方法是否更有呢?

【     插曲,基础知识补充。

    不过可以自己实现下排序并记录位置的java代码。  //ArrayTest.java

          System.out.println(Arrays.toString(ary));   //一次性正体打印数组
          System.out.println(Arrays.asList(ary)); //可以将 数组转为List 但是,这个数组类型必须是 引用类型的,如果是8种基本数据类型就不可以

     其中asList的学习见如下链接:http://blog.csdn.net/anders_zhuo/article/details/8960996

 参考网上的方法:http://blog.sina.com.cn/s/blog_7bee572b0101ux4q.html   学习使用java的Map HashMap类

  时间复杂复:Runtime: 352 ms     java代码还是比人家常规的java代码复杂好多。。大哭

 
import java.util.HashMap;   
import java.util.Hashtable;
 
public class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] Index = new int[2];   //java中定义数组都不会int[] array=new int[5];
        Map map = new HashMap();
        for(int i=0 ; i<nums.length; i++){
            map.put(nums[i],i);
        }
        for(int i=0 ; i<nums.length; i++){
            int gas = target - nums[i];
            if(map.get(gas)!=null && (int)(map.get(gas))!=i){
                Index[0] = i + 1;
                Index[1] = (int)(map.get(gas)) + 1;
                break;
            }
        }
        return Index;
             
    }
}


人家网站上显示的时间复杂复在100~200之间是怎么做到的?

一哭,Runtime: 332 ms

算法思想:分别将所有比较过得数与target的差值一个个放入map中,当比较到map里面含有nums[i]时表示已经找到了这两个数。

 public class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] Index = new int[2];   //java中定义数组都不会int[] array=new int[5];
        HashMap<Integer, Integer>  map = new HashMap<Integer, Integer>();
         
        for(int i =0; i<nums.length; i++){
            if(map.containsKey(nums[i])){
                Index[0]=map.get(nums[i])+1;
                Index[1]= i+1;
                break;
            }else{
                map.put(target-nums[i],i);
            }
        }
        return Index;
    }
}

本问题存在的问题:当不止一对数满足该要求时,但只返回了一对。


        

 

   




 

版权声明:本文为博主原创文章,未经博主允许不得转载。

leetcode (1) Two Sum js代码实现

Given an array of integers, find two numbers such that they add up to a specific target number. The...
  • sinat_27350883
  • sinat_27350883
  • 2015年12月19日 21:22
  • 1009

[LeetCode]1 Two Sum(C++,Python实现)

LeetCode OJ的第一题,题目描述如下:
  • Shiroh_ms08
  • Shiroh_ms08
  • 2014年05月16日 21:17
  • 1885

【LeetCode】LeetCode——第1题:Two Sum

Given an array of integers, find two numbers such that they add up to a specific target number. The ...
  • hujingshuang
  • hujingshuang
  • 2016年01月04日 17:01
  • 1478

LeetCode-two sum:python解答数组问题

问题描述:给定一个数组和整型数字,找出数组中两个数加和为该整数的两个数的下标...
  • Winterto1990
  • Winterto1990
  • 2016年04月12日 21:11
  • 1190

【leetcode c++】twoSum

4月份接触leetcode,没多久就要准备考试大坑,已然忘记这玩意。最近得闲,便把已经写好的leetcode整理一下发到博客来。 (应该不会出问题吧第一次写博客→  →) 先上题目原文 Given a...
  • hqq39
  • hqq39
  • 2015年06月03日 15:16
  • 1263

【LeetCode with Python】 Two Sum

Given an array of integers, find two numbers such that they add up to a specific target number. The...
  • nerv3x3
  • nerv3x3
  • 2014年07月06日 15:39
  • 25104

leetcode two sum python 实现

Two Sum-----LeetCode
  • yuanxiaobo007
  • yuanxiaobo007
  • 2014年06月10日 14:32
  • 2216

LeetCode || Two Sum

Two Sum  Total Accepted: 16363 Total Submissions: 87273My Submissions Given an array of ...
  • jiadebin890724
  • jiadebin890724
  • 2014年04月09日 23:11
  • 33882

leetcode 1. Two Sum -----java

题目链接:https://leetcode.com/problems/two-sum/ 题目: Given an array of integers, return indices of th...
  • j754379117
  • j754379117
  • 2016年06月20日 19:52
  • 1416

[leetcode] 371. Sum of Two Integers 解题报告

题目链接: https://leetcode.com/problems/sum-of-two-integers/ Calculate the sum of two integers a and b...
  • qq508618087
  • qq508618087
  • 2016年06月30日 13:23
  • 7984
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode Two Sum 题库记录--代码小白开始码代码的人生,第一天!
举报原因:
原因补充:

(最多只允许输入30个字)