Fidesa OA
Test two questions online:
Airport Scheduling Problem
/ * At an airport you have a timetable for arrivals and departures.
* You need to determine the minimum number of gates you * d need to provide so that all the planes can be placed at a gate as per their schedule.
* The arrival and departure times for each plane are presented in two arrays, sorted by arrival time, and you're told the total number of flights for the
* day. Assume that no planes remain overnight at the airport; all fly in and back out on the same day. Assume that if a plane departs in the same minute as another plane arrives, the arriving plane takes priority (ie you'll still need the gate for the departing plane). Write a function that returns
* the minimum number of gates needed for the schedules you're given.
* Example:
* arrQ = {900, 940, 950, 1100,1500,1800}
* depQ = {910,1200,1120, 1130,1900, 2000}
* flights = 6
public:
int findMinGates (vector <int> arrQ, vector <int> depQ, int flight) {
sort (arrQ.begin (), arrQ.end ());
sort (depQ.begin (), depQ.end ());
int count = 0;
int deppointer = 0;
for (int i = 1; i <flight; i ++) {
if (arrQ [i]> = depQ [deppointer]) {
deppointer ++;
} else {
count ++;
}
}
return count;
}
}; [/ mw_shl_code]
2. Matching Pair
Matching pairs
* You are given a String, input, contained of alphabetical letters with varying case.
* These letters should create pairs with one another, based on case. For example, the letter 'N forms a "matching pair' with the letter 'a', in that order.
* Rules:
* 1. The first letter must be upper-case.
* 2. Every upper-case letter must be followed by its lower-case version or any upper-case letter.
* 3. When an upper-case letter is followed by its lower-case version, those two letters are considered a "matching pair and can then be disregarded from further match consideration.
* 4. If any of these rules are broken or a lower-case letter is encountered that does not create a "matching pair 'with its nearest un-matched left neighbour, that letter and all following letters are considered" un-matched ".
* Output: Your method should return the zero-based index of the last matching lower-case letter, or -1 if no pairs exist.
* Limits: 0 <input length <10,000 characters The optimal method has a running time of O (input length).
* Sample input # 1
* ABba
* Sample output # 1
* 3
Solution:
[mw_shl_code = cpp, true] class MatchingPair {
public:
int matchingpairs (const string & str) {
if (! isUpperCase (str.at (0)) || str.size () == 0)
return -1;
stack <char > stack;
stack.push (str.at (0));
int res = 0;
for (int i = 1; i <str.size (); i ++) {
if (! isUpperCase (str.at (i)) ) {
char c = stack.top ();
if (c-32 == str.at (i)) {
stack.pop ();
res = i;
} else
return res;
} else {
stack.push (str. at (i));
}
}
if (stack.empty ())
return str.size ()-1;
else
return res;
}