【LeetCode从零单排(Java)】No1.Two Sum

来源:互联网 发布:初中化学软件有哪些 编辑:程序博客网 时间:2024/05/19 17:51

题目


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].

暴力枚举法

public class Solution {    public int[] twoSum(int[] nums, int target) {                    for(int i = 0;i<nums.length ;i++ )        {            for(int m = 0;m<nums.length ;m++ )            {                               if(nums[i] +nums[m] ==  target &&m!= i)                {                    int[] arr = new int[2];                    arr[0]= i;                arr[1]= m;                    return arr;                }                        }                    }             return null;           }}

//使用hash表

public class Solution {    public int[] twoSum(int[] nums, int target) {               int[] result = new int[2];          int n;          Integer idx;          Map<Integer, Integer> map = new HashMap<Integer, Integer>(nums.length);                    for (int i = 0; i < nums.length; i++) {              map.put(nums[i], i);          }          for (int i = 0; i < nums.length - 1; i++) {              n = target - nums[i];              idx = map.get(n);              if(idx != null && idx > i){                  result[0] = i;                  result[1] = idx;                  break;              }          }          return result;      }  }

使用第二种方法可大幅提高算法时间

0 0
原创粉丝点击