1.Two Sum

来源:互联网 发布:java 登录密码md5加密 编辑:程序博客网 时间:2024/05/22 05:08

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, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].

public class Solution {    public int[] twoSum(int[] nums, int target) {        int[] solution=new int[2];        for(int i=0;i<nums.length-1;i++){            for(int j=i+1;j<nums.length;j++){                if(nums[i]+nums[j]==target){                    solution[0]=i;                    solution[1]=j;                    return solution;                }            }        }        return solution;    }    }
上面这种方法是遍历,复杂度比较高,嗯,编程能力比较小白难过

其他方法我看到有一种复杂度为O(n)的,采用了HashMap;containsKey(value)表示查找map中含有括号中的value;get(value)表示获得map中相应value的key值;put(value,key)把值放入map中

public class Solution{    public int[] twoSum(int[] numbers, int target) {        int[] result = new int[2];        Map<Integer, Integer> map = new HashMap<Integer, Integer>();        for (int i = 0; i < numbers.length; i++) {            if (map.containsKey(target - numbers[i])) {                result[1] = i;                result[0] = map.get(target - numbers[i]);                return result;            }            map.put(numbers[i], i);        }        return result;    }}
相关链接:https://discuss.leetcode.com/topic/2447/accepted-java-o-n-solution