• 算法题-两数求和


    问题描述:

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

    你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

    你可以按任意顺序返回答案。

    示例 :

    输入:nums = [2,7,11,15], target = 9
    输出:[0,1]
    解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
    
    1. package mycode.leetcode;
    2. import java.util.HashMap;
    3. import java.util.Map;
    4. /**
    5. * @author 苗晓强
    6. * @date 2023/9/23 14:14
    7. *
    8. * 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
    9. *
    10. * 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
    11. *
    12. * 你可以按任意顺序返回答案。
    13. *
    14. * 示例 :
    15. * 输入:nums = [2,7,11,15], target = 9
    16. * 输出:[0,1]
    17. * 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
    18. */
    19. public class TwoSum {
    20. public static void main(String[] args) {
    21. int [] nums = {2,7,11,15};
    22. int target = 9;
    23. int [] index = twoSumMethodOne(nums,target);
    24. for (int element : index){
    25. System.out.println(element);
    26. }
    27. System.out.println("=====================");
    28. index = twoSumMethodTwo(nums,target);
    29. for (int element : index){
    30. System.out.println(element);
    31. }
    32. }
    33. //解法一:暴力破解 双层for循环 时间复杂度 O(n^2)
    34. private static int[] twoSumMethodOne(int[] nums, int target) {
    35. for (int i = 0; i < nums.length; i++) {
    36. for (int j = i+1; j < nums.length; j++){
    37. if (nums[i] + nums[j] == target){
    38. return new int[] {i,j};
    39. }
    40. }
    41. }
    42. return null;
    43. }
    44. //解法二:hash表 时间复杂度 O(N)
    45. private static int[] twoSumMethodTwo(int[] nums, int target) {
    46. Map map = new HashMap<>();
    47. for (int i = 0; i < nums.length; i++) {
    48. int partner = target - nums[i];
    49. if (map.containsKey(partner)){
    50. return new int [] {map.get(partner),i};
    51. }
    52. map.put(nums[i],i);
    53. }
    54. return null;
    55. }
    56. }

  • 相关阅读:
    微信小程序WeUI项目weui-miniprogram如何运行起来?
    二叉树理论基础篇
    旋转验证码分析 rotatecaptcha
    AtCoder ABC 319E 中国剩余定理
    【探花交友】阿里云OSS、百度人脸识别
    上手之Python之文件操作
    SpringAOP底层原理
    Python项目——项目优化(Elasticsearch)(一)
    乐华娱乐欲重返上市:毛利率走低,上半年利润下滑,韩庚为股东
    软件和硬件中的调用
  • 原文地址:https://blog.csdn.net/mnimxq/article/details/133204936