给定一个数组和一个数字,找出数组中的两个值加起来等于这个数字

给定一个数组和一个数字,找出数组中的两个值加起来等于这个数字

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

public class TwoSum {

    // 方法:寻找数组中两个数相加等于目标值的索引
    public static int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> numMap = new HashMap<>(); // 创建哈希表用于存储已遍历过的数值及其索引
        for (int i = 0; i < nums.length; i++) {
            int complement = target - nums[i]; // 计算当前元素与目标值的差值
            
            // 如果差值存在于哈希表中,说明我们找到了一对解
            if (numMap.containsKey(complement)) {
                return new int[]{numMap.get(complement), i}; // 返回这两个数的索引
            }
            
            // 将当前元素存入哈希表,以便后续查找其是否能与其他元素构成目标和
            numMap.put(nums[i], i);
        }
        
        // 如果没有找到符合条件的数对,返回一个空数组或其他表示未找到的值
        return new int[0];
    }

    // 主方法,用于测试
    public static void main(String[] args) {
        int[] nums = {2, 7, 11, 15};
        int target = 9;
        int[] result = twoSum(nums, target);
        
        if (result.length == 2) {
            System.out.println("Indices of the two numbers that add up to " + target + ": [" + result[0] + ", " + result[1] + "]");
        } else {
            System.out.println("No two sum solution found.");
        }
    }
}

posted @ 2024-06-27 22:29  fchhk  阅读(4)  评论(0编辑  收藏  举报