
哈希表以 O(1) 的查找速度解决了很多需要快速判断是否存在的问题。一、两数之和publicint[]twoSum(int[]nums,inttarget){MapInteger,IntegermapnewHashMap();for(inti0;inums.length;i){intcomplementtarget-nums[i];if(map.containsKey(complement)){returnnewint[]{map.get(complement),i};}map.put(nums[i],i);}returnnewint[]{-1,-1};}二、三数之和publicListListIntegerthreeSum(int[]nums){Arrays.sort(nums);ListListIntegerresultnewArrayList();for(inti0;inums.length-2;i){if(i0nums[i]nums[i-1])continue;// 去重intlefti1,rightnums.length-1;while(leftright){intsumnums[i]nums[left]nums[right];if(sum0){result.add(Arrays.asList(nums[i],nums[left],nums[right]));while(leftrightnums[left]nums[left1])left;while(leftrightnums[right]nums[right-1])right--;left;right--;}elseif(sum0){left;}else{right--;}}}returnresult;} 觉得有用的话点赞 关注【张老师技术栈】吧