使用 C++ 计算两个数组中的元素
让我们假设我们已经给出了两个未排序的数组arr1[]和arr2[]。任务是计算arr2[]中元素的总数,其中arr1[]的每个元素都小于或等于arr2[]中存在的元素。但是,两个数组中的元素也可能包含重复项。
例如,
输入1-
N = 6 M = 7 arr1[N] = {1, 2, 5, 0, 6, 3} arr2[M] = {0,0,1,2,1,3,4,6,8}
输出-
4 5 7 2 8 6
用来解决这个问题的方法
对arr1[]中的每个元素进行计数,并检查它们是否小于等于arr2[]中的元素,思路是对arr2[]进行排序,并使用二分查找法找到arr1[]中小于等于的元素或等于arr2[]中存在的元素。
输入arr1和arr1的大小为'm'和'n'。
获取数组元素的输入。
函数countInSecond(int*arr1,int*arr2,intm,intn)将两个数组及其大小作为输入,并返回arr2[]中存在的元素的计数。
对arr2[]进行排序。
迭代arr1[]并使用二分搜索来查找arr2[]中的特定元素。
返回小于或等于元素的计数。
示例
#includeusing namespace std; void countInSecond(int *nums1,int *nums2,int m,int n){ sort(nums2, nums2+n); int i=0; for(int i=0;i 输出结果 运行上面的代码将生成输出,
4 5 7 2 8 6arr1中小于或等于arr2中的元素的计数为{457286}。