标题: * 第6题:数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8} [打印本页] 作者: 18255007004 时间: 2015-1-16 12:44 标题: * 第6题:数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8} * 第6题:数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
* @author 刘德旺
*/
import java.util.Arrays;
public class Test6 {
public static void main(String[] args) {
int arr[]={4,2,4,6,1,2,4,7,8};
System.out.println("原始数组:[4,2,4,6,1,2,4,7,8]");
System.out.println("去重复后的数组:"+Arrays.toString(repeat(arr))); //将去重后数组打印出来
}
public static int[] repeat(int [] arr){
boolean flag[] = new boolean[arr.length];//定义一个和目标数组长度一样的boolean类型,此数组用作标示,用于获取不重复元素的个数的标志位
for (int i = 0; i < flag.length; i++) {//遍历数组,查找重复的元素。循环结束后,重复的元素对应的标志位置都为true。
if (flag[i]) //如果这个元素对应的标志位已被置为true,则返回循环继续检查下一个元素。
continue;
for (int j = i+1; j < flag.length; j++) { //后边元素和此位置上的元素比较,
if (arr[j]==arr[i]) { //如果后边元素和前边元素相同,
flag [j]=true; //则此重复元素对应的标志位置为true
}
}
}
int count=0; //计数器,记录不重复元素的个数
for (int i = 0; i < flag.length; i++) { //算出不重复元素的个数,记为count,
if (!flag[i]) { //标志位依然为false的对应元素即为不重复的元素
count++;
}
}
int index=0;
int [] arrNew = new int [count]; //定义新数组,元素个数为count。
for (int i = 0; i < arr.length; i++) { //将所有不重复的元素存入新数组中
if (!flag[i]) {
arrNew[index++]=arr[i];
}
}