前言:
今天各位老铁们对“数据结构与算法测试题答案”大体比较看重,兄弟们都想要剖析一些“数据结构与算法测试题答案”的相关资讯。那么小编也在网摘上收集了一些有关“数据结构与算法测试题答案””的相关文章,希望我们能喜欢,朋友们一起来学习一下吧!题目描述:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
输入:nums = [2, 7, 11, 15], target = 9 输出:[0, 1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
解题思路:
最直观的解法是使用双重循环遍历数组中的每对数字,检查它们的和是否等于目标值。但这种方法的时间复杂度为 O(n^2),效率较低。
更高效的方法是利用哈希表(在Java中可以使用HashMap)。遍历数组一次,对于每个元素,我们可以检查哈希表中是否存在目标值减去当前元素的值。如果存在,说明我们找到了一对解;如果不存在,则将当前元素及其索引存入哈希表,继续遍历。
这种方法的时间复杂度降低到了 O(n),空间复杂度也是 O(n),因为最坏情况下需要存储数组中的所有元素。
Java代码实现:
Java1import java.util.HashMap;2import java.util.Map;34public class Solution {5 public int[] twoSum(int[] nums, int target) {6 Map<Integer, Integer> numMap = new HashMap<>();7 for (int i = 0; i < nums.length; i++) {8 int complement = target - nums[i];9 if (numMap.containsKey(complement)) {10 return new int[]{numMap.get(complement), i};11 }12 numMap.put(nums[i], i);13 }14 // 由于题目保证有且只有一个解,所以这里不需要写返回语句15 throw new IllegalArgumentException("No two sum solution");16 }1718 public static void main(String[] args) {19 Solution solution = new Solution();20 int[] nums = {2, 7, 11, 15};21 int target = 9;22 int[] result = solution.twoSum(nums, target);23 System.out.println("[" + result[0] + ", " + result[1] + "]");24 }25}
这段Java代码首先定义了一个Solution类,其中的twoSum方法实现了寻找两数之和等于目标值的逻辑。在main方法中,我们创建了Solution实例并调用了twoSum方法来验证其正确性。
标签: #数据结构与算法测试题答案