算法-两个数组的交集
2022/7/27 1:23:44
本文主要是介绍算法-两个数组的交集,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
01、题目分析
给定两个数组 nums1 和 nums2 返回它们的交集。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序 。【leetcode】
示例1
输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2]
示例2
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4]
题解分析
题目函数返回值是int*,也就是返回一个数组,首先创建所需返回的数组ret,大小是fmax(nums1Size,nums2Size),然后定义两个指针i,j,分别指向nums1,nums2,k记录ret中元素个数。
然后进行循环,将nums1中的每一个元素与nums2作比较,当nums1[i] == nums2时候,将相等的值放入ret,然后k++,并将nums1[i]和nums2[j]分别置为-1,避免重复计算。
题解
int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize) { int *res = (int *)malloc(sizeof(int) * fmax(nums1Size,nums2Size));//申请一块内存,大小是nums1Size和nums2Size的最大值 int i,j,k = 0; for( i = 0; i < nums1Size; i++) { for( j = 0; j < nums2Size; j++) { //如果 nums1[i] == nums2[j],那么将此值放入ret数组中,然后清空该位置元素【置-1】 // 然后跳出本次循环 if(nums1[i] == nums2[j]) { res[k++] = nums1[i]; nums1[i] = -1; nums2[j] = -1; break; } } } // 返回结果数组以及长度 *returnSize = k; return res; }
测试结果
int nums1Size = 4, nums2Size = 2; int nums1[nums1Size] = {1,2,2,1}; int nums2[nums2Size] = {2,2};
int nums1Size = 3, nums2Size = 5; int nums1[nums1Size] = {4,9,5}; int nums2[nums2Size] = {9,4,9,8,4};
这篇关于算法-两个数组的交集的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?