# Kiran
// arr = [{a: 2, b: 55}, {a: 'abc', c: 55}, {a: 2, b: 23422}]; prop = 'a'
// => {'2': [{a: 2, b: 55}, {a: 2, b: 23422}], 'abc': [{a: 'abc', c: 55}]}
function groupBy(arrOfObjs, prop) {
let mp = {};
arr.forEach((e)=>{
if(prop in mp) mp[prop]=[e];
else mp[prop].push(e);
})
return mp;
}
// sortedArr = [1,2,3,... 66, 88, ..., 373, 500, 600];
// after n = 2 rotations
// arr = [500, 600, 1, 2, ..., 373];
function numberOfRotations(arr) {
int s=0,e=arr.size()-1;
if(arr[s]<arr[e]) return 0;
while(s<e){
int mid=((s+e)/2);
if(arr[mid]<arr[s]) e=mid;
else s=mid;
}
return s+1;
}
// intervals: [[2, 3], [6, 9], [11, 15]]
// newInterval: [8, 13]
// return [[2, 3], [6, 15]]
function mergeIntervals(intervals, newInterval) {
vector<pair<int,int>>updatedIntervals;
updatedIntervals.push_back(intervals[0]);
int flag=1;
for(int i=1;i<intervals.size();i++){
int b = updatedIntervals.back();
if(intervals[i].first>=newInterval.first&&flag){
if(b.second>=newInterval.first) updatedIntervals.back.second=max(newInterval.second,b.second));
else updatedIntervals.push(newInterval);
i--;
flag=0;
}
else{
if(b.second>=intervals[i].first) updatedIntervals.back.second=max(intervals[i].second,b.second);
else updatedIntervals.push(intervals[i]);
}
}
return updatedIntervals;
}
[[2,3],[6,15]]