2024-03-13 数组中的数,求补数

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现

解析

利用HashMap来存储数组元素及其索引。在遍历数组时,我们尝试查找目标值与当前元素的差值是否已经在HashMap中。如果找到了,则返回对应的两个索引;如果没有找到,则将当前元素及其索引存入HashMap中。


import java.util.HashMap;
import java.util.Map;

public class Solution {
public int[] twoSum(int[] nums, int target) {
// 创建一个HashMap来存储数组元素和对应的索引
Map<Integer, Integer> map = new HashMap<>();

    // 遍历数组  
    for (int i = 0; i < nums.length; i++) {  
        int complement = target - nums[i];  
          
        // 检查HashMap中是否存在补数  
        if (map.containsKey(complement)) {  
            // 如果存在,返回结果  
            return new int[] { map.get(complement), i };  
        }  
          
        // 如果不存在,将当前数字放入HashMap中  
        map.put(nums[i], i);  
    }  
      
    // 如果没有找到,则返回一个空数组(或者抛出一个异常,视情况而定)  
    throw new IllegalArgumentException("No two sum solution");  
}  

public static void main(String[] args) {  
    Solution solution = new Solution();  
    int[] nums = {2, 7, 11, 15};  
    int target = 9;  
      
    try {  
        int[] result = solution.twoSum(nums, target);  
        System.out.println("Indices of two numbers that sum up to " + target + ": " + result[0] + ", " + result[1]);  
    } catch (IllegalArgumentException e) {  
        System.out.println(e.getMessage());  
    }  
}  

}


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容