思路分析:首先通过快速排序,然后对排好序的数组设置主比较游标与辅比较游标,主比较游标初始化为下标0,辅比较游标则从下标1开始递增,挨个与第一个元素比较。在比较的过程中,若遇到相等的,则辅比较游标继续向后走,直到遇到不相等的,将主比较游标后移一位,此时主比较游标指向的元素值就是重复的,需要将其替换掉。然后将辅比较游标指向的元素值赋给主比较游标代表的元素值。重复这样的过程,直到所有的重复元素都比替换掉,此时主比较游标代表的就是去重后数组的最大下标,将其加一即为去重后数组的长度。代码如下:#include "stdafx.h"#include #include int int_c Read More
posted @ 2014-03-11 18:04 源子陌 Views(3637) Comments(0) Diggs(0)
方法一:位图法,原理是首先申请一个长度为n且均为’0’组成的字符串,字符串的下标即为数组a[]中的元素,然后从头开始遍历数组a[N],取每个数组元素的值,将其对应的字符串中的对应位置置1,如果已经置过1,那么该数就是重复的数。由于采用的是位图法,所以空间复杂度比较大,为O(N).代码如下:#include "stdafx.h"#include #include bool xor_findDup(int * arr, int NUM){ int *arrayflag = (int *)malloc(NUM*sizeof(int)); int i = 1; while (i # Read More
posted @ 2014-03-11 00:04 源子陌 Views(2618) Comments(0) Diggs(0)