public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { int complement = target - nums[i]; if (map.containsKey(complement)) { return new int[] { map.get(complement), i }; } map.put(nums[i], i); } throw new IllegalArgumentException("No two sum solution"); }
时间: 2024-02-14 10:04:49 浏览: 148
Two Sum算法调试小demo
这是一段 Java 代码,实现了在给定整数数组 nums 中找出两个数,使它们的和为目标数 target,并返回这两个数的下标。
具体实现思路是:使用哈希表来存储数组中的元素和它们对应的索引,遍历数组,对于每个元素,计算出它与目标数 target 的差值 complement,如果哈希表中存在 complement,则返回 complement 和当前元素的下标,否则将当前元素及其下标存入哈希表中。如果遍历完整个数组都没有找到符合条件的两个数,则抛出 IllegalArgumentException 异常。
该算法的时间复杂度为 O(n),空间复杂度为 O(n)。它利用了哈希表的快速查找特性,避免了暴力枚举的时间复杂度为 O(n^2)。
阅读全文