find a number in the given intervals, make this point fall in as many intervals as possible.
for example: [2, 3], [3, 5], [4, 5], [1, 5], [1, 2]
return 4 or 5
for example: [2, 3], [3, 5], [4, 5], [1, 5], [1, 2]
return 4 or 5
Tips: using brute force.
#include <vector>
#include <iostream>
#include <climits>
using namespace std;
// question 2, using brute force.
struct Interval {
int start;
int end;
Interval(int a, int b) : start(a), end(b) {}
};
int pointInMaxInterval(vector<Interval>& nums) {
int minValue = INT_MAX;
int maxValue = INT_MIN;
for(int i = 0; i < nums.size(); ++i) {
minValue = min(minValue, nums[i].start);
maxValue = max(maxValue, nums[i].end);
}
struct nodes {
int val;
int count;
nodes(int a, int b) : val(a), count(b) {}
};
nodes maxCount(0, 0);
for(int i = minValue; i <= maxValue; ++i) {
int count = 0;
for(int j = 0; j < nums.size(); ++j) {
if(nums[j].start <= i && nums[j].end >= i) {
count++;
}
}
if(count > maxCount.count) {
maxCount.val = i;
maxCount.count = count;
}
}
return maxCount.val;
}
int main(void) {
vector<Interval> nums{{8, 10}, {3, 5}, {4, 5}, {1, 5}, {1, 2}};
cout << pointInMaxInterval(nums) << endl;
}