首页 » 算法 » 数组中找到两个数,相加结果是已知数

已知数组中有两个数的和是一个target,写算法找出这两个数的索引。如nums = [2, 7, 11, 15], target = 9,找出的index是[0, 1]

[1] 算法思路:索引化,类似数据库中的map,找到一个书x,那么寻找target-x是否在数组中。

import java.util.HashMap;
import java.util.Map;
class Solution {
    
    public int[] twoSum(int[] nums, int target) {
        int [] result = new int[2];
        Map<Integer,Integer> map = new HashMap<Integer,Integer>(nums.length);

      for(int j  = 0 ;j < nums.length;j++){
             if(map.containsKey(target-nums[j])){
                        result[1] = j ;
                        result[0] =map.get(target-nums[j]);
                        break;
                    }else{
                          map.put(nums[j] ,j);
                    }
               
         }
        return result;
    }
}

[2] 算法复杂度,O(n)

添加新评论