两数相加

来源:互联网 发布:java 获取浏览器 编辑:程序博客网 时间:2024/05/21 14:52

Example:

Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].
我的方法( O(n2) ):

public class Solution {    public int[] twoSum(int[] nums, int target) {        int[] tmparray={0,0};        int tmp;        for(int i=0;i<nums.length;i++){               for(int k=1;k<nums.length;k++){                   if(nums[i]+nums[k]==target&&i!=k){                       tmparray[0]=i;                       tmparray[1]=k;                       return  tmparray;                   }                   continue;               }          }          return tmparray;     }}


官网给出方法(O(n))

public int[] twoSum(int[] nums, int target) {    Map<Integer, Integer> map = new HashMap<>();    for (int i = 0; i < nums.length; i++) {        int complement = target - nums[i];        if (map.containsKey(complement)) {            return new int[] { map.get(complement), i };        }        map.put(nums[i], i);    }    throw new IllegalArgumentException("No two sum solution");}

区别:

1.我的方法是两次循环数组,而官网给出的是将数组放入map

2.我是相加求target,而官网是相减求另外一个数

0 0
原创粉丝点击