题目1:有n个无序重复数,其中每个数都不超过n,删除重复的数字 /*******************************************/ /* 程序功能:删除一个无序数组中的重复数 */ /* 程序员: 刘晋勋 */ /* 日期: 2010/03/27 */ /* 目的: 编程练习 */ /******************************************/ #include<stdio.h> #include<string.h> #include<stdlib.h> void RemoveAllDuplicates(int seq[], int n) { int *pHash = (int*)malloc(sizeof(int)*n); memset(pHash,0,sizeof(pHash)*n); int i = 0; for(i = 0;i < n;++i) { pHash[seq[i]]++; if(1 == pHash[seq[i]] ) { printf("%d/t",seq[i]); } } free(pHash); } int main() { int seq[] = { 5,3,4,2,3,2,2,5}; RemoveAllDuplicates(seq, 8); return 0; } 题目2:有n的无序的重复数,其中每个数都不超过n,找到重复的数字 /*******************************************/ /* 程序功能:找到一个无序数组中的重复数 */ /* 程序员: 刘晋勋 */ /* 日期: 2010/03/27 */ /* 目的: 编程练习 */ /******************************************/ #define TRUE 1 #define FALSE 0 void FindReapetNum(int seq[], int n) { int *pFlag = (int*)malloc(sizeof(int)*n); memset(pFlag,FALSE,sizeof(int)*n); int i = 0; for (i = 0;i < n;++i) { if(FALSE == pFlag[seq[i]]) { pFlag[seq[i]] = TRUE; } else printf("%d" ,seq[i]); } free(pFlag); } int main() { int seq[] = { 5,3,4,2,3,2,2,5}; FindReapetNum(seq, 8); return 0; }