两数之和

Bertha 。 2021-10-15 03:35 433阅读 0赞

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

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

示例:

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

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

  1. package com.ljm.easy.onetofifty;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. /**
  5. * Created by linjiaming
  6. *
  7. *
  8. * Given an array of integers, return indices of the two numbers such that they add up to a specific target.
  9. *
  10. * You may assume that each input would have exactly one solution, and you may not use the same element twice.
  11. *
  12. * Example:
  13. *
  14. * Given nums = [2, 7, 11, 15], target = 9,
  15. *
  16. * Because nums[0] + nums[1] = 2 + 7 = 9,
  17. * return [0, 1].
  18. *
  19. * 来源:力扣(LeetCode)
  20. * 链接:https://leetcode-cn.com/problems/two-sum
  21. * 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
  22. *
  23. */
  24. public class TwoSum {
  25. /**
  26. * 方法一:暴力破解
  27. * @param nums
  28. * @param target
  29. * @return
  30. */
  31. public static int[] twoSum1(int[] nums, int target) {
  32. for (int i = 0; i < nums.length; i++) {
  33. for (int j = i + 1; j < nums.length; j++) {
  34. if (nums[j] == target - nums[i]) {
  35. return new int[]{i, j};
  36. }
  37. }
  38. }
  39. return null;
  40. }
  41. /**
  42. * 方法二:哈希映射,相较于方法一时间复杂度较低
  43. * @param nums
  44. * @param target
  45. * @return
  46. */
  47. public static int[] twoSum2(int[] nums, int target){
  48. Map<Integer, Integer> map = new HashMap<Integer, Integer>(16);
  49. for (int i = 0; i < nums.length; i++) {
  50. if (map.containsKey(target - nums[i])) {
  51. return new int[]{map.get((target - nums[i])), i};
  52. }
  53. map.put(nums[i],i);
  54. }
  55. return null;
  56. }
  57. public static void main(String[] args) {
  58. int[] value = twoSum2(new int[]{2, 7, 11, 15}, 9);
  59. System.out.println(value.toString());
  60. }
  61. }

发表评论

表情:
评论列表 (有 0 条评论,433人围观)

还没有评论,来说两句吧...

相关阅读

    相关 之和

    定一个整数数组 **`nums`**和一个目标值 **`target`**,请你在该数组中找出和为目标值的那 **两个** 整数,并返回他们的数组下标。 你可以假设每种...

    相关 之和

    两数之和 1、题目 > 题目要求 给定一个整数数组 `nums` 和一个目标值 `target`,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下

    相关 之和

    题目描述 给出一个整数数组,请在数组中找出两个加起来等于目标值的数, 你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 ind

    相关 之和

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能

    相关 之和

    题目: 给定一个整数数组 `nums` 和一个目标值 `target`,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应

    相关 之和

    > 题目: > 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 > 你可以假设每种输入只会

    相关 之和

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不

    相关 之和

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能