本文共 1361 字,大约阅读时间需要 4 分钟。
要解决问题,可以使用两种常用的方法:双层循环和哈希表(字典)法。以下将详细解释这两种方法,并分析它们的优劣。
这种方法通过两重循环检查每个元素对的和,直到找到目标值的组合。具体步骤如下:
实现示例:
public static int[] twoSum(int[] nums, int target) { int[] result = new int[2]; for (int i = 0; i < nums.length; i++) { int paramA = nums[i]; for (int j = i + 1; j < nums.length; j++) { int paramb = nums[j]; if (paramA + paramb == target) { result[0] = i; result[1] = j; } } } return result;}
优点:代码简单直白,易于理解。
缺点:时间复杂度较高,为 O(N²),当数组较大时效率低下。
这种方法利用哈希表存储已遍历元素,以快速查找配对元素,步骤如下:
实现示例:
public static int[] twoSum2(int[] nums, int target) { Mapmap = new HashMap<>(); for (int i = 0; i < nums.length; i++) { int currentSum = target - nums[i]; if (map.containsKey(currentSum)) { return new int[]{map.get(currentSum), i}; } map.put(nums[i], i); } throw new IllegalArgumentException("No two sum result");}
优点:时间和空间复杂度均为 O(N),性能优良。
缺点:需要处理特殊情况,例如当无解时抛出异常。
根据具体需求选择合适的方法。
转载地址:http://nlgyk.baihongyu.com/