• 算法题-两数求和


    问题描述:

    给定一个整数数组 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. }

  • 相关阅读:
    MySQL 锁
    .net 转 JAVA ssm java整合
    自动化工具Selenium IDE基本使用——脚本编辑
    会员积分商城系统的功能介绍
    线性方程组(二)
    Java脚本:获取距离当前日期接近的一个工作日
    【web-攻击用户】(9.6.1)其他客户端注入攻击:HTTP消息头、cookie
    1000个已成功入职的软件测试工程师简历范文模板(含真实简历)
    DJYROS产品:基于DJYOS的国产自主割草机器人解决方案
    【c++5道练习题】①
  • 原文地址:https://blog.csdn.net/mnimxq/article/details/133204936