题目

image.png

思路

  • 思路一:暴力枚举,遍历两个数之和,看是否相等
  • 思路二:利用HashMap查找另一个数,节省了时间,暴力枚举中主要花费在第二层循环中找另一个数,使用HashMap来查找就会很快

    代码

    1. //1.暴力枚举
    2. public int[] twoSum(int[] nums, int target) {
    3. int n = nums.length;
    4. for (int i = 0; i < n; ++i) {
    5. for (int j = i + 1; j < n; ++j) {
    6. if (nums[i] + nums[j] == target) {
    7. return new int[]{i, j};
    8. }
    9. }
    10. }
    11. return new int[0];
    12. }
    13. //2.使用HashMap优化计算
    14. public int[] twoSum(int[] nums, int target) {
    15. Map<Integer, Integer> map = new HashMap<>();
    16. for (int i = 0; i < nums.length; ++i) {
    17. if (map.containsKey(target - nums[i])) {
    18. return new int[]{map.get(target - nums[i]), i};
    19. }
    20. map.put(nums[i], i);
    21. }
    22. return new int[0];
    23. }

    两数之和