// 打印重复的元素_要求O(M + N).cpp : Defines the entry point for the console application.
//
//数组有N+M个数字, 数字的范围为1 ... N, 打印重复的元素, 要求O(M + N),
#include "stdafx.h"
int Array[] = {3,4,8,1,2,9,8,5,7,6,10,6,4};
//8,4,3,1,2,9,8,5,7,6,10,6,4
//5,4,3,1,2,9,8,8,7,6,10,6,4
//2,4,3,1,5,9,8,8,7,6,10,6,4
//4,2,3,1,5,9,8,8,7,6,10,6,4
//1,2,3,4,5,9,8,8,7,6,10,6,4
//1,2,3,4,5,7,8,8,9,6,10,6,4
//1,2,3,4,5,8,7,8,9,6,10,6,4
//1,2,3,4,5,8,7,8,9,6,10,6,4
void swap(int &a, int &b)
{
int tmp = a;
a = b;
b = tmp;
}
void printReplication(int A[], int M, int N)
{
for (int i=0; i<M; i++)
{
while ((A[i] != i+1) && (A[i] != A[A[i]-1]))
{
swap(A[i], A[A[i]-1]);
}
}
for (int i=N; i<M; i++)
{
printf("%d", A[i]);
}
printf("\n");
}
int _tmain(int argc, _TCHAR* argv[])
{
printReplication(Array, sizeof(Array)/sizeof(Array[0]), 10);
return 0;
}
打印重复的元素_要求O(M + N)
最新推荐文章于 2024-09-14 14:55:35 发布