作风建设年 网站,网站策划编辑是干嘛的,广东seo推广价格,股票交易网站建设提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣1. 两数之和二、力扣454. 四数相加 II三、力扣383. 赎金信 前言
使用map的空间消耗要比数组大一些的#xff0c;因为map要维护红黑树或者哈希表… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 前言一、力扣1. 两数之和二、力扣454. 四数相加 II三、力扣383. 赎金信 前言
使用map的空间消耗要比数组大一些的因为map要维护红黑树或者哈希表而且还要做哈希函数是费时的数据量大的话就能体现出来差别了。 所以数组更加简单直接有效 什么时候使用哈希法当我们需要查询一个元素是否出现过或者一个元素是否在集合里的时候就要第一时间想到哈希法。
一、力扣1. 两数之和
class Solution {public int[] twoSum(int[] nums, int target) {MapInteger,Integer map new HashMap();int [] res new int[2];for(int i 0; i nums.length; i ){map.put(nums[i],i);}for(int i 0; i nums.length; i ){if(map.containsKey(target-nums[i]) map.get(target-nums[i]) ! i){return new int[]{i,map.get(target-nums[i])};}}return res;}
}二、力扣454. 四数相加 II
class Solution {public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {MapInteger,Integer map new HashMap();int count 0;for(int a : nums4){for(int b : nums3){map.put(ab,map.getOrDefault(ab,0)1);}}for(int i 0; i nums1.length; i ){int sum nums1[i];for(int j 0; j nums2.length; j ){sum nums2[j];if(map.containsKey(-sum)){count map.get(-sum);}sum - nums2[j];}}return count;}
}三、力扣383. 赎金信
class Solution {public boolean canConstruct(String ransomNote, String magazine) {MapCharacter,Integer map new HashMap();for(int i 0; i magazine.length(); i ){map.put(magazine.charAt(i),map.getOrDefault(magazine.charAt(i),0)1);}for(int i 0; i ransomNote.length(); i ){if(!map.containsKey(ransomNote.charAt(i))){return false;}else if(map.get(ransomNote.charAt(i)) 0){return false;}else{map.put(ransomNote.charAt(i),map.get(ransomNote.charAt(i))-1);}}return true;}
}