# 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]]