DaveRoox
BAN USERI solved it with polymorphism defining a super class for a generic element (that can be a single element or an array).
This is my solution in C++:
class ListableObject {
public:
virtual void print() const = 0;
virtual ~ListableObject() {}
};
class Vector : public ListableObject {
private:
vector<ListableObject*> v;
public:
Vector(const vector<ListableObject*> &_v):
v(_v) {}
void push_back(ListableObject *o) {
v.push_back(o);
}
virtual void print() const {
cout << "[";
if(v.size() > 0) {
for(int i = 0, l = v.size() - 1; i < l; i++) {
v[i]->print();
cout << ", ";
}
v[v.size() - 1]->print();
}
cout << "]";
}
virtual ~Vector() {
}
};
class Element : public ListableObject {
private:
int value;
public:
Element(const int _value):
value(_value) {}
virtual void print() const {
cout << this->value;
}
virtual ~Element() {
}
};
int main() {
Element e1 = 2;
Element e2 = 3;
vector<ListableObject*> v2 = {&e1, &e2};
Vector innerObject = v2;
Element e3 = 8;
Vector* outerObject = new Vector(vector<ListableObject*>{&innerObject, &e3});
outerObject->push_back(new Vector(vector<ListableObject*>{new Element(18), new Element(25)}));
outerObject->print();
return 0;
}
My solution in C++:
class Interval {
public:
int start;
int end;
Interval(int _start, int _end):
start(_start), end(_end) {}
};
vector<Interval> insertAndMerge(const vector<Interval> &v, int number) {
vector<Interval> toReturn;
int k = 0;
while(k < v.size() && v[k].end < number)
toReturn.push_back(v.at(k++));
if(k > 0)
toReturn[k - 1].end = k < v.size() ? v[k].end : number;
else
toReturn.push_back(Interval(min(number, v[0].start), v[0].end));
for(int i = k + 1; i < v.size(); i++)
toReturn.push_back(v.at(i));
return toReturn;
}
int main() {
vector<Interval> v = {
Interval(1, 4),
Interval(6, 8),
Interval(11, 13)
};
for(const auto &i : insertAndMerge(v, 9)) {
cout << "[" << i.start << ", " << i.end << "]\n";
}
return 0;
}
Repdanikademers, HTML Experienced at Barclays Capital
I am Danika , working as a junior content writer with Jafco where I use my blog writing and social media ...
The output should be [1,4,7,3,2,6,5] not [1,5,7,3,2,6,4] if I got correctly the problem.
If so, this is my solution in C++:
- DaveRoox November 20, 2017