importjava.util.Arrays;importjava.util.HashMap;classScratch{publicstaticvoidmain(String[] args){int[] ints =newScratch().twoSum(newint[]{3,4,4,2,1},8);System.out.println(Arrays.toString(ints));}publicint[]twoSum(int[] numberList,int targetNumber){HashMap<Integer,Integer> numberIndexMap =newHashMap<>();for(int i =0; i < numberList.length; i++){if(numberIndexMap.containsKey(targetNumber - numberList[i])){returnnewint[]{numberIndexMap.get(targetNumber - numberList[i]), i};}else{
numberIndexMap.put(numberList[i], i);}}thrownewRuntimeException("no two sum to the target");}}
关键点HashMap的创建,添加数据,查询数据HashMap使查找的时间复杂度由O(n)降到O(1)倒排索引的思想,正常是根据索引找到值(在数组中),倒排就是根据值找到索引(在HashMap中)函数签名public int[] twoSum(int[] numberList, int targetNumber) 功能描述在numberList中找到两个数,其和为targetNumber,返回这两个数的索引。完整代码import java.util.Arrays;import jav