【Leetcode刷题笔记06】454. 四数相加 II 383. 赎金信 15. 三数之和 18. 四数之和
admin
2024-01-19 00:31:15
0

454. 四数相加 II

题目描述

给你四个整数数组 nums1nums2nums3nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:

  • 0 <= i, j, k, l < n
  • nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0

做题思路

本题可以使用哈希表,key为nums1[i] + nums2[j]的和,value为其出现的次数。然后再遍历nums3和nums4,如果存在key为0-(nums3[k] + nums4[l]),那么结果就加对应的value。

参考代码

class Solution {public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {Map map=new HashMap<>();//新建hashmapint res=0;int tmp;for(int i:nums1){for(int j:nums2){tmp=i+j;if(map.containsKey(tmp))map.put(tmp,map.get(tmp)+1);else map.put(tmp,1);}}for(int i:nums3){for(int j:nums4){tmp=i+j;if(map.containsKey(0-tmp))res+=map.get(0-tmp);}}return res;}
}

383. 赎金信

题目描述

给你两个字符串:ransomNotemagazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false

magazine 中的每个字符只能在 ransomNote 中使用一次。

做题思路

本题可以使用哈希法,先记录每个字母在magazine中出现的次数,再减去每个字母在ransomNote中出现的次数,若出现value<0,则说明该字母magazine中没有。

参考代码

class Solution {public boolean canConstruct(String ransomNote, String magazine) {int[] record=new int[26];for(char c:magazine.toCharArray())record[c-'a']++;for(char c:ransomNote.toCharArray())record[c-'a']--;for(int i:record)if(i<0)return false;return true;}
}

15. 三数之和

题目描述

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != kj != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请

你返回所有和为 0 且不重复的三元组。

**注意:**答案中不可以包含重复的三元组。

参考代码

class Solution {public List> threeSum(int[] nums) {List> result = new ArrayList<>();Arrays.sort(nums);for (int i = 0; i < nums.length; i++) {if (nums[i] > 0) {return result;}if (i > 0 && nums[i] == nums[i - 1]) {continue;}int left = i + 1;int right = nums.length - 1;while (right > left) {int sum = nums[i] + nums[left] + nums[right];if (sum > 0) {right--;} else if (sum < 0) {left++;} else {result.add(Arrays.asList(nums[i], nums[left], nums[right]));while (right > left && nums[right] == nums[right - 1]) right--;while (right > left && nums[left] == nums[left + 1]) left++;right--; left++;}}}return result;}
}

18. 四数之和

题目描述

给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):

  • 0 <= a, b, c, d < n
  • abcd 互不相同
  • nums[a] + nums[b] + nums[c] + nums[d] == target

你可以按 任意顺序 返回答案 。

参考代码

class Solution {public List> fourSum(int[] nums, int target) {List> result = new ArrayList<>();Arrays.sort(nums);for (int i = 0; i < nums.length; i++) {// nums[i] > target 直接返回, 剪枝操作if (nums[i] > 0 && nums[i] > target) {return result;}if (i > 0 && nums[i - 1] == nums[i]) {continue;}for (int j = i + 1; j < nums.length; j++) {if (j > i + 1 && nums[j - 1] == nums[j]) {continue;}int left = j + 1;int right = nums.length - 1;while (right > left) {long sum = (long) nums[i] + nums[j] + nums[left] + nums[right];if (sum > target) {right--;} else if (sum < target) {left++;} else {result.add(Arrays.asList(nums[i], nums[j], nums[left], nums[right]));while (right > left && nums[right] == nums[right - 1]) right--;while (right > left && nums[left] == nums[left + 1]) left++;left++;right--;}}}}return result;}
}

相关内容

热门资讯

幻城岚裳真实身份是什么 幻城岚... 幻城岚裳真实身份是什么 幻城岚裳结局死了吗岚裳是人鱼公主,未来无尽海的圣尊结局中岚裳没有死,她最终回...
大公鸡有什么生活习性? 大公鸡有什么生活习性?大公鸡什么生活习性天亮就打鸣。一般都是晨起鸣,晚上息,白天还喜欢斗斗架,吃点小...
晚清时期的军事文化思想巨变由“... 晚清时期的军事文化思想巨变由“重文轻武”转向“重武轻文”,你怎么看呢?这次我觉得应该对于文武都应该加...
东南西北八方于阴阳五行相对应的... 东南西北八方于阴阳五行相对应的是东方木,南火,西金,北水,中央土。
你读了西游记,有啥感受。急用! 你读了西游记,有啥感受。急用!•我明白一个好的团队中不仅仅要有一个领导者唐僧,还要有保护他们的悟空,...
请教酥骨鱼的做法? 请教酥骨鱼的做法?酥骨鱼好吃,老幼皆宜。鱼骨也是绵软入味,可与鱼肉同食,不仅补钙还能补充微量元素。非...
星巴克4个月内提价2次,会员能... 星巴克4个月内提价2次,会员能接受这样的涨价吗?会员不能接受这样的涨价。因为星巴克在短短的时间之内屡...
他在学习方面时常不求甚解,老师... 他在学习方面时常不求甚解,老师无奈地摇摇头:“学知识总是( ),难题只会越来越?他在学习方面时常不求...
田螺姑娘读书笔记 田螺姑娘读书笔记宝宝,妈妈想对你说:小田螺化身为美丽的姑娘,向救她一命的单身汉报恩,这个善良的田螺姑...
政采专家考试是开卷吗 政采专家考试是开卷吗不是。政府采购专家,需要参加省财政部门组织的线上闭卷考试,达到80分以上的才具备...
陪伴的意义是什么? 陪伴的意义是什么?陪伴的意义,是为了跟孩子【在一起】,陪伴才是给宝宝更适合的爱。不是任务,不是为了什...
魔兽世界LM怎么去泰达希尔 魔兽世界LM怎么去泰达希尔到黑海岸的奥博丁坐船可以到达泰达希尔从暴风城坐船去,或者直接找法师开门到暗...
三国群英传7:梦回公元前梦魂的... 三国群英传7:梦回公元前梦魂的祝福编码是多少梦回公元前梦魂的祝福编码是66087 在进入...
有哪些以青梅竹马为主线的gal 有哪些以青梅竹马为主线的gal上一个回答有毒。爱之匙青梅竹马单线;lovesick puppies青...
赛尔号能用雷伊单挑布莱克吗 赛尔号能用雷伊单挑布莱克吗不可能拜托,不能我是靠光系兔子秒掉四倍能够秒掉。如果没四倍。除非刷防。再抽...
柳州的风俗 柳州的风俗555推荐你去 节日风俗网 上找,关于每个节日都有相关的介绍的柳州很多地方很多时间很多事情...
极品飞车10 过了第一个地头蛇... 极品飞车10 过了第一个地头蛇,奖章什么的都拿了,为什么地图上还是没有出现新的任务?极品飞车10 过...
结营啦!“七彩假期 仪路童行”... 七彩假期 仪路童行 2025公益暑托班圆满收官 时光匆匆,为期两周的“七彩假期 仪路童行”公...
为什么程序员都会穿格子衬衫,是... 为什么程序员都会穿格子衬衫,是因为简单好看吗?因为程序员一般是性格比较严谨,很有耐心的,所以他们一般...
致广大游客的一封信——汛期出游... 广大游客朋友们: 当前我市已进入防汛关键期,同时正值暑期旅游高峰,极端天气多发,滑坡、泥石流、洪涝等...