在stackoverflow看到求两个数组的交集的补集的提问。可惜当我写好代码,准备提交的时候,发现那个题目被大神关了。在这里留下痕迹吧
例如 a1 = {1,2,3,6}; a2 = {2, 6, 7}
输出就是{1, 3, 7}
#include"stdlib.h" #include"stdio.h" int main() { int arr1[] = {2, 3, 4}; int arr2[] = {1, 2, 4, 5}; int i = 0; int j = 0; int size1 = sizeof(arr1)/sizeof(int); int size2 = sizeof(arr2)/sizeof(int); //We only output the different value while(i<size1 && j<size2) { if(arr1[i]<arr2[j]) { printf("%d,", arr1[i]); i++; } else if(arr1[i]>arr2[j]) { printf("%d,", arr2[j]); j++; } else { //Skip the same value i++; j++; } } //Deal with the tails if(i!=size1) { for(;i<size1;i++) printf("%d,", arr1[i]); } else if(j!=size2) { for(;j<size2;j++) printf("%d,", arr2[j]); } return 0; }
假如输入的数据没有排序,则先排序,O(nlogn)
假如数据已排好序,O(n)