两数之和

2020-06-16  本文已影响0人  知识分享share
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

暴力

public class Solution{
  public static void main(String[] args){}
  static int[] twoSum(int nums,int target){
      for(int i=0;i<nums.length;i++){
        for(int j=i+1;i<nums.length;j++){
          if(nums[j]==target-nums[i]){
            return new int[]{i,j};
          }
        }  
      }
      throw new IllegalArgumentException("No two sum solution");
  }
}

map缓存

  static int[] twoSum(int[] nums,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");    
  }
上一篇下一篇

猜你喜欢

热点阅读