Skip to content

Instantly share code, notes, and snippets.

@seresistvanandras
Last active June 13, 2018 14:54
Show Gist options
  • Save seresistvanandras/e1ccd7cebcc87e5d8d86c9d7b3a24611 to your computer and use it in GitHub Desktop.
Save seresistvanandras/e1ccd7cebcc87e5d8d86c9d7b3a24611 to your computer and use it in GitHub Desktop.
function uniquify(uint[] input) public pure returns(uint[] ret) {
       if(input.length < 2) {
           return input;
       }

       bool[] memory duplicates = new bool[](input.length);
       uint256 duplicateCounter = 0;
       uint counte r = 0;
       uint[] memory unique = new uint[](input.length);
       unique[counter] = input[counter];
       counter++;
       for(uint i = 0; i < input.length; i++) {
           for(uint j = i+1; j < input.length; j++) {
               if(input[i]==input[j] && !duplicates[j]) {
                   duplicates[j] = true;
                   duplicateCounter++;
               }
           }
           // you already know here i+1 is a duplicate or not
           if(i+1<input.length && !duplicates[i+1]) {
               unique[counter] = input[i+1];
               counter++;
           }
       }
       uint[] memory unique2 = new uint[](counter);
       for(i=0; i < counter; i++) {
           unique2[i] = unique[i];
       }

       ret = unique2;
   }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment