美文网首页
两数之和:给定一个整数数组 nums 和一个目标值 target

两数之和:给定一个整数数组 nums 和一个目标值 target

作者: iamlyly | 来源:发表于2019-05-25 16:03 被阅读0次

import java.util.*;

/**

  • 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

  • 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

  • 示例:

  • 给定 nums = [2, 7, 11, 15], target = 9

  • 因为 nums[0] + nums[1] = 2 + 7 = 9

  • 所以返回 [0, 1]
    /
    public class TwoSum {
    /
    *

    • 解法1
    • @param nums
    • @param target
    • @return
      */
      public int[] twoSum(int[] nums, int target) {
      int[] tmp=nums.clone();
      Arrays.sort(nums);
      int i=0;
      int j=nums.length-1;
      List<Integer> result = new ArrayList<>();
      while(i<j){
      int sum = nums[i]+nums[j];
      if(sum==target){
      result.add(nums[i]);
      result.add(nums[j]);
      break;
      }else if(sum<target){i++;}
      else if(sum>target){j--;}
      }
      if(result.size()==0) return null;
      int count=0;
      int[] result1 = new int[2];
      for(int n=0;n<tmp.length;n++){
      if(tmp[n]==result.get(0)||tmp[n]==result.get(1)){
      result1[count]=n;
      count++;
      }
      if(count==2) break;
      }
      return result1;
      }

    /**

    • 解法2
    • @param nums
    • @param target
    • @return
      */
      public int[] twoSum1(int[] nums, int target) {
      Map<Integer,Integer> hash = new HashMap<>();
      for(int i=0;i<nums.length;i++){
      int num2 = target-nums[i];
      if(hash.containsKey(num2)){
      return new int[]{hash.get(num2),i};
      }else{
      if(!hash.containsKey(nums[i])){
      hash.put(nums[i],i);
      }
      }
      }
      return null;
      }

    /**

    • 解法3
    • @param args
      */

    public int[] twoSum3(int[] nums, int target) {

     for(int i=0;i<nums.length;i++){
         for(int j=i+1;j<nums.length;j++){
             if(nums[i]+nums[j]==target){
                 return new int[]{i,j};
             }
         }
     }
     return null;
    

    }
    public static void main(String[] args){
    int[] num = {3,3};
    int target = 6;
    TwoSum solution = new TwoSum();
    int[] s = solution.twoSum1(num,target);
    System.out.print("["+s[0]+","+s[1]+"]");
    }
    }

相关文章

  • leecode刷题(8)-- 两数之和

    leecode刷题(8)-- 两数之和 两数之和 描述: 给定一个整数数组 nums 和一个目标值 target,...

  • 2022-04-03 LeetCode刷题

    两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target...

  • 算法总结 1 - 5

    [TOC] 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 ...

  • LeetCode·[Two Sum 两数之和]

    LeetCode·[Two Sum 两数之和] 题目: 给定一个整数数组 nums 和一个目标值 target,请...

  • Leetcode(1) - 两数之和 - java版

    Leetcode(1) - 两数之和 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中...

  • 算法:两数求和

    两数之和 题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 tar...

  • 前端常见算法题(数组篇)

    一、和问题 2020.09.21 No.1 两数之和 给定一个整数数组 nums 和一个目标值 target,请你...

  • 用Swift刷LeetCode(一)

    1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。...

  • Day 1

    1、两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数...

  • leetcode 001 两数之和

    两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并...

网友评论

      本文标题:两数之和:给定一个整数数组 nums 和一个目标值 target

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