前言:
5894. 至少在两个数组中出现的值作者:神的孩子在歌唱
大家好,我叫智,一个算法小菜鸡
难度简单0收藏分享切换为英文接收动态反馈
给你三个整数数组 nums1、nums2 和 nums3 ,请你构造并返回一个 不同 数组,且由 至少 在 两个 数组中出现的所有值组成*。*数组中的元素可以按 任意 顺序排列。
示例 1:
输入:nums1 = [1,1,3,2], nums2 = [2,3], nums3 = [3] 输出:[3,2] 解释:至少在两个数组中出现的所有值为: - 3 ,在全部三个数组中都出现过。 - 2 ,在数组 nums1 和 nums2 中出现过。
示例 2:
输入:nums1 = [3,1], nums2 = [2,3], nums3 = [1,2] 输出:[2,3,1] 解释:至少在两个数组中出现的所有值为: - 2 ,在数组 nums2 和 nums3 中出现过。 - 3 ,在数组 nums1 和 nums2 中出现过。 - 1 ,在数组 nums1 和 nums3 中出现过。
示例 3:
输入:nums1 = [1,2,2], nums2 = [4,3,3], nums3 = [5] 输出:[] 解释:不存在至少在两个数组中出现的值。
提示:
- 1 <= nums1.length, nums2.length, nums3.length <= 100
- 1 <= nums1[i], nums2[j], nums3[k] <= 100
import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; public class xfdd { public ListtwoOutOfThree(int[] nums1, int[] nums2, int[] nums3) { List list=new ArrayList (); HashMap map=new HashMap<>(); // 循环遍历一个数组 for(int nums:nums1) { map.put(nums, 1); } // 遍历查看nums2里面是否有元素在map里 for(int nums:nums2) { // 如果有且list没有,且value为1 if (map.containsKey(nums)&&map.get(nums)==1&&!list.contains(nums)) { // 增加元素 list.add(nums); // 将value改为0 map.put(nums,map.getOrDefault(nums, 0)); } // 存入数组2的元素 if (!map.containsKey(nums)) { map.put(nums, 2); } } for(int nums:nums3) { if (map.containsKey(nums)&&map.get(nums)==1&&!list.contains(nums)) { list.add(nums); map.getOrDefault(nums, 0); }else if (map.containsKey(nums)&&map.get(nums)==2&&!list.contains(nums)) { list.add(nums); map.put(nums,map.getOrDefault(nums, 0)); } } return list; } }
本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)