刷题日志

45 阅读1分钟

LeetCode算法

  • 两数之和

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

思路:

1.暴力枚举

 class Solution {
     public int[] twoSum(int[] nums, int target) {
         int n = nums.length;
         for (int i = 0; i < n; ++i) {
            
             //在i后面寻找 target-i
             for (int j = i + 1; j < n; ++j) {
                 if (nums[i] + nums[j] == target) {
                     return new int[]{i, j};
                 }
             }
         }
         return new int[0];
     }
 }
  • return new int[0]的意义:

定义返回值应该是int类型的数组,所以更合理的解释是返回return new int0,定义在此处没有实际的意义,只是为了编译器编译过程中不出错。

2.哈希表

 class Solution {
     public int[] twoSum(int[] nums, int target) {
         Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>();
         for (int i = 0; i < nums.length; ++i) {
             if (hashtable.containsKey(target - nums[i])) {
                 return new int[]{hashtable.get(target - nums[i]), i};
             }
             hashtable.put(nums[i], i);
         }
         return new int[0];
     }
 }

image.png