Codility: PermMissingElem

Find the missing element in a given permutation.

Question

A zero-indexed array A consisting of N different integers is given. The array contains integers in the range [1..(N + 1)], which means that exactly one element is missing.

Your goal is to find that missing element.

Write a function:

int solution(NSMutableArray *A);

that, given a zero-indexed array A, returns the value of the missing element.

For example, given array A such that:

  A[0] = 2
  A[1] = 3
  A[2] = 1
  A[3] = 5

the function should return 4, as it is the missing element.

Assume that:

  • N is an integer within the range [0..100,000];
  • the elements of A are all distinct;
  • each element of array A is an integer within the range [1..(N + 1)].

Complexity:

  • expected worst-case time complexity is O(N);
  • expected worst-case space complexity is O(1), beyond input storage (not counting the storage required for input arguments).

Elements of input arrays can be modified.

Copyright 2009–2015 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.

Solution

- (int)permMissing:(NSMutableArray*) A {
    //(2, 3, 1, 5)
    //(2, 3, 4, 5, 6)
    //(3, 2)
    //(1)
    //(4, 2, 3, 5, 1, 6, 8, 9)
    int size = A.count; //4   
    int sum = 0;
    int add = 0;
    int missing_num = 0;
    int i;
    for(i = 0; i < size + 1; i ++){
        if(i < size) sum = sum + [A[i] integerValue];
        add = add + i+1;
    }   
    missing_num = add - sum;    
    return missing_num;
}

Leave a comment