0
点赞
收藏
分享

微信扫一扫

两数之和-使用hash表

代码实现

/*
* 两数之和问题
* */
public class HashTwoSum {
    public static int[] TwoSum(int[] nums,int target){
        //使用hash表解决两数之和问题
        Map<Integer, Integer> map = new HashMap();
        for (int i = 0; i < nums.length; i++) {
            //thatNum是我们要找的值
            int thatNum = target - nums[i];
            //如果hash表中存在我们要找的值并且不是同一个位置
            if(map.containsKey(thatNum) && map.get(thatNum) != i){
                return new int[]{i,map.get(thatNum)};
            }
            map.put(nums[i],i);
        }
        throw new IllegalArgumentException("no solution");
    }

    public static void main(String[] args) {
        int[] nums = {2,7,11,15};
        int target = 9;
        int[] ints = HashTwoSum.TwoSum(nums, target);

        for (int i = 0; i < ints.length; i++) {
            System.out.print(ints[i]);
        }
    }
}

举报

相关推荐

0 条评论