Two sum

作者: Hf1dw | 来源:发表于2018-03-15 09:31 被阅读0次

    Question

    Analysis

    给定一个整数数组,在其中找两个数,两数满足其和为一个随机的整数且这两个数不等,返回这两个数的下标。

    Answers

    • Brute Force
    public int[] twoSum (int[]nums;int target){
      for (int i=0;i<nums.length;i++){
        for (int j=i+1;j<nums.length;j++){
          if (nums[j]==target-nums[i]){
            return new int[]{i,j};
           }
          }
        }
       throw new IllegalArgumentException("No two sum solution");
    }
    
    • Two-pass Hash Table
    public int[] twoSum(int[] nums,int target){
      Map<Integer,Integer> map=new HashMap<>();
      for (int i=0;i<nums.length;i++){
        map.put(nums[i],i);
      }
      for (int i=0;i<nums.length;i++){
        int complement=target-nums[i];
        if (map.containsKey(complement)&&map.get(complement !=i){
          return new int[]{i;map.get(complement)};
        }
      }
      throw new IliegalArgumentException("No two sum solution");
    }
    
    • One-pass Hash Table
    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");
    }

    相关文章

      网友评论

          本文标题:Two sum

          本文链接:https://www.haomeiwen.com/subject/bgecqftx.html