今天在做项目的时候要用到2个数据的交集算法,就去研究了一下。
原本考虑的情况是2个数组都是升序且无重复元素,所以就用了以下算法:
public static List isRepeat(int list1[], int list2[]) {
if (list1 != null && list2 != null) {
int length1 = list1.length;
int length2 = list2.length;
List rep = new ArrayList();
int i = 0, j = 0;
while (i < length1 && j < length2) {
if (list1[i] == list2[j]) {
rep.add(new Integer(list1[i]));
i++;
j++;
} else if (list1[i] > list2[j]) {
j++;
} else {
i++;
}
}return rep;
}
return null;
}
后来发现数据在数据库中是以varchar形式存在,无法以order by正确排序,心想如果自己先排序再用以上算法有点不值。于是乎继续研究,发现用List.retianAll()方法就可以实现,代码如下:
List list = new ArrayList(Arrays.asList(a));
list.retainAll(Arrays.asList(b));
这个方法唯一的遗憾就是,如果数组中存在相同的元素,该方法不会过滤掉。
分享到:
相关推荐
在Java编程中,处理两个数组的交集是常见...总结,处理Java中的两个数组交集可以通过多种方式实现,包括`HashSet`、流API、双重循环以及并查集等。理解这些方法的原理和适用场景,有助于我们在实际编程中做出最佳选择。
接下来,我们再遍历第二个数组B,对于每个元素,如果它在哈希表中存在并且计数不为零,那么就将其添加到结果集合中,并将计数减一。这种方法的时间复杂度为O(n),因为每个元素只被访问一次。 具体步骤如下: 1. ...
- `arr2`: 第二个有序数组 - `n2`: `arr2`的长度 - `Inter`: 存储交集结果的数组 - **核心逻辑**: - 使用三个指针`i`、`j`和`k`分别指向`arr1`、`arr2`和`Inter`。 - 在循环中比较`arr1[i]`和`arr2[j]`的值:...
这个算法的时间复杂度主要取决于排序的过程,通常为O(n log n),其中n是两个数组中元素总数的最大值。空间复杂度是O(min(m, n)),m和n分别是两个数组的长度,因为我们只存储交集元素,所以结果向量的大小不会超过较...
以上就是JavaScript获取多个数组交集的常见方法。在实际开发中,我们需要根据具体情况选择最适合的方案,平衡性能和代码简洁性。同时,理解这些基本操作也有助于我们更好地掌握JavaScript数组处理的技巧。在阅读类似...
解释:两个数组的交集是[2],因为2是唯一同时存在于两个数组中的元素。 示例2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 解释:9和4是同时存在于nums1和nums2中的元素,因此交集是[9,4]。 此...
从数组1的尚未比较的元素中拿出第一个元素array1(i),用array1(i)与array2(j)进行比较(其中j>i且j<array2的长度),可能出现下面两种情况, 1. 数组2中找到了一个与array1(i)相等的元素,则将array2(j)与array2(i)...
通过阅读和学习这段代码,你可以更好地理解如何在JavaScript中处理数组交集问题。而`README.txt`文件可能提供了一些关于代码使用、测试或优化的说明,可以帮助你更好地运用这些方法。 总之,寻找两个数组的交集是...
本篇文章将详细解释两种不同的Python3实现计算两个数组交集的算法,并探讨涉及的数组操作技巧。 首先,我们来看方案一,这种方法巧妙地运用了`collections.Counter`类和位运算`&`。`Counter`是一个可哈希对象的频率...
在Java中,有两种主要方法来计算数组交集:使用HashSet或双层循环。我们先来看第一种方法: 1. 使用HashSet: HashSet是一个不包含重复元素的集合,它没有重复元素,也没有特定的顺序。通过将一个数组的所有元素...
本文实例讲述了Python实现求两个数组交集的方法。分享给大家供大家参考,具体如下: 一、题目 给定两个数组,编写一个函数来计算它们的交集。 例1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 例2: ...
本文介绍的获取数组交集的方法有两个前提条件:首先,传入的两个数组必须是已经排过序的。其次,这个方法的时间复杂度是O(n),其中n是两个数组中较短的那个的长度。 具体实现方法如下: ```javascript function ...
"Intersector" 是一个专门针对这种情况的高度优化库,它提供了高效计算数组交集的功能,适用于各种不同的内容类型,包括基本类型和复杂对象。本文将深入探讨Intersector的工作原理、优势以及如何在实际项目中应用。 ...
综上所述,这个压缩包提供了关于使用PHP解决LeetCode中数组交集问题的实例,是学习和实践算法的好资源。通过深入理解并实践这些代码,可以增强对PHP语言和算法的理解,对于提升编程技能和解决问题的能力非常有帮助。
- 两数组交集、并集、差集:使用`filter()`和`includes()`实现。 - 快速排序:可以使用数组的`sort()`配合自定义比较函数实现。 通过熟练掌握以上知识,开发者能够更加灵活地处理JavaScript中的数组,提高代码...
本教程将深入探讨C语言中的数组操作,特别是如何找出两个数组的交集。首先,让我们理解数组的基本概念。 数组是由相同类型的数据元素构成的集合,这些元素在内存中是连续存储的。每个元素都有一个唯一的索引,从0...
标题中的“java-leetcode面试题解哈希表第350题两个数组的交集II-题解.zip”指的是一个关于Java编程语言的LeetCode面试题解析,具体是第350题,题目要求解决“两个数组的交集II”的问题,而解题方法主要涉及哈希表的...