Wednesday, April 24, 2013

Tripadvisor Interview: Specify Number in Array in C++



Giving an array, let you find the numbers which is larger than its previous numbers and smaller or equal than the numbers behind it. Then you can return a random number in the specified number array.

Requirements:1, Implement this question.2, Using O(n) time complexity.3, Using O(n) space complexity.


int specificNum(vector<int> arr)
{
vector<int> result;
vector<int> m_vec;
int max = INT_MIN;
for(int i=0;i<arr.size();i++)
{
if(arr[i]>max)
{
max = arr[i];
}
m_vec.push_back(max);
}
int min = INT_MAX;
for(int i=arr.size()-1;i>=1;i--)
{
if(arr[i]<min)
{
min = arr[i];
}
if(arr[i]>m_vec[i-1]&&arr[i]<=min)
result.push_back(arr[i]);
}
if(arr[0]<=min)
result.push_back(arr[0]);
 assert(result.size()==0);
int n = result.size();
srand (time(NULL));
int r_num = rand()%n;
return result[n];
}

1 comment: