哈希表 02

159 阅读1分钟

原题链接

代码如下:

import java.util.Arrays;
import java.util.Deque;
import java.util.HashMap;
import java.util.LinkedList;

/**
 * 哈希表
 * 
 * 哈希表Key为数组元素,Value为对应下标
 * 将数组元素存入HashMap中,判断之前存的元素中是否有构成和为target且
 * 下标不同的元素
 * 
 * Code by java
 */

class Solution {
	public int[] twoSum(int[] nums, int target) {
		HashMap<Integer, Integer> map = new HashMap<>();
		for(int i = 0; i < nums.length; i++) {
			int temp = target - nums[i];
			if(map.containsKey(temp) && map.get(temp) != i) {	//和相同且下标不同
				return new int[] {map.get(temp), i};
			}
			map.put(nums[i], i);	//将当前元素存入HashMap中
		}
		return new int[] {};	//没找到,return空数组
	}

	public static void main(String[] args) {
		Solution a = new Solution();
		int[] k = { 2, 7, 11, 15 };
		System.out.println(Arrays.toString(a.twoSum(k, 9)));
	}
}