每日一道算法题:两个数组的交集
来源:互联网 发布:捕鱼游戏机核心算法 编辑:程序博客网 时间:2024/06/05 10:55
题目:A、B两个整数集合,设计一个算法求它们的交集,尽可能的高效。
解题思路:(1)开始想到的是先将两个集合排序,然后利用两个指针指向两个集合,进行数值是否相等的判断,另指针继续遍历,代码如下:
#include <iostream>using namespace std;#define M 7#define N 6int comp(const void* a, const void* b){ return *(int*)a - *(int*)b;} int main(){ int A[] = {-53, 244, 6, 79, 14, 0, 300}; int B[] = {-78, 0, 14, 56, -53, 489}; qsort(A, M, sizeof(int), comp); qsort(B, N, sizeof(int), comp); int result[M>N?M:N]; int pointer = 0; int i=0,j=0; while(i < M && j <N){ if (A[i] == B[j]){ result[pointer] = A[i]; i++; j++; pointer++; } else if(A[i] < B[j]){ i++; } else{ j++; } } for (int k = 0; k < pointer; k++){ cout << result[k] << " "; } cout << endl; system("pause"); return 0;}
思路(2):思路一的时间复杂度为O(n*n),肯定不满足题目要求,
0 0
- 每日一道算法题:两个数组的交集
- 每日一算--求两个数组的交集
- 构造数组的MaxTree(每日一道算法题)
- 【每日一道算法题】
- 【每日一道算法题】
- 【每日一道算法题】
- 【每日一道算法题】
- 【每日一道算法题】
- 【每日一道算法题】
- 两个数组取交集算法的一些想法
- 每日一道算法题:编程实现两个数的除法,当然不能用除法操作符
- 打印两个有序链表的公共部分(每日一道算法题)
- 求两个数组的交集
- 求两个数组的交集
- 求两个数组的交集
- 求两个数组的交集
- 求两个数组的交集
- 求两个数组的交集
- 心跳包机制
- POJ 1580-String Matching(枚举)
- ZOJ 3466 The Hive II 插头DP
- 一直在路上
- Mac MySQL 安装方法
- 每日一道算法题:两个数组的交集
- openSUS开启root账户ssh远程登录方法汇总
- C语言中 *号的用途
- 学习笔记 Hadoop是什么?
- 安卓中显示单位:px和dip以及sp的讲解
- Unity3D DestroyImmediate Destroy
- android app(3)-Hello world程序分析
- 计算几何
- wifidog数据流图