求两数之和-采用哈希查找实现

package com.ag;

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

/**
 * 求两数之和:
 * 哈希查找实现
 */
public class TwoSum {
    public static  int[] twoSUmHashTable(int[]nums,int target){
        int size=nums.length;
        //辅助哈希表,空间复杂度为O(n)
        Map<Integer,Integer> dic=new HashMap<>();
        //单层循环,时间复杂度为O(n)
        for(int i=0;i<size;i++){
            if(dic.containsKey(target-nums[i])){
                return new int[]{dic.get(target - nums[i]),i};
            }
            dic.put(nums[i],i);
        }
        return new int[0];
    }

    public static void main(String[] args) {
        int[] nums={2,7,11,15};
        int[] result=twoSUmHashTable(nums,13);
        Arrays.stream(result).forEach(System.out::println);
    }
}

你可能感兴趣的:(算法&数据结构,哈希算法,java,算法)