Monday, March 14, 2011

Unique


import java.util.*;
public class Unique {

private final int num=52;
int [] arr = new int[num];
public int[] uniquen(){
int cost=0;
int l = arr.length;
int [] o = new int[l]; // the values cannot exceed the length!
for(int i=0; i<l; i++) {
o[i] = -1; // init to -1
//cost++;
}
int [] newa = new int[l];
int s=0;
for(int i=0; i<l; i++) {
o[arr[i]] = arr[i]; // assumes values in arr don't exceed the length of arr
// could have done a max(arr) as the length of o instead.
cost++;
}
for(int i=0; i<l; i++) {
if (o[i] != -1) {
newa[s++] = o[i];
cost++;
}
}
int [] result = new int[s];
System.out.print("result:");
for(int k=0; k<s; k++) {
result[k] = newa[k];
System.out.print(","+result[k]);
cost++;
}
System.out.println("");
System.out.println("cost:"+cost+"\n");
return result;
}

public int[] uniquen2(){
int cost=0;
int l = arr.length;
int [] newa = new int[l];
int s=0;
for(int i=0; i<l; i++) {
for(int j=i+1; j<l; j++) {
if (arr[i] == arr[j]) j = ++i;
cost++;
}
newa[s++] = arr[i];
}
int [] result = new int[s];
System.out.print("result:");
for(int k=0; k<s; k++) {
result[k] = newa[k];
System.out.print(","+result[k]);
cost++;
}
System.out.println("");
System.out.println("cost:"+cost+"\n");
return result;
}

Random rand = new Random();
public void shuffleArr(){
for (int i=0; i<arr.length-1; i++) {
arr[i] = i/3;
}
for (int i=0; i<arr.length-1; i++) {
int rnd = i+ rand.nextInt(arr.length-i);
//swap arr[i] and a[rnd]
int tmp = arr[i];
arr[i] = arr[rnd];
arr[rnd] = tmp;
}
System.out.print("\nin:");
for(int i=0; i<arr.length; i++) {
System.out.print(","+arr[i]);
}
System.out.println("\n");
}


public static void main(String[] args) {
Unique inst = new Unique();
inst.shuffleArr();
inst.uniquen2();
inst.uniquen();
}
}

No comments:

Post a Comment