My AC Java In-place solution
public class Solution {\n        public List<Interval> insert(List<Interval> intervals, Interval newInterval) {\n            if(intervals.isEmpty()){\n         
    public class Solution {\n        public List<Interval> insert(List<Interval> intervals, Interval newInterval) {\n            if(intervals.isEmpty()){\n                intervals.add(newInterval);\n                return intervals;\n            }\n            \n            int start = newInterval.start;\n            int end = newInterval.end;\n            ListIterator<Interval> li = intervals.listIterator();\n            boolean inserted = false;\n            while(li.hasNext()){\n                Interval itv = li.next();\n                if(start <= itv.end){\n                    if(end < itv.start){ //newInterval does not overlap with current itv, time to insert\n                        li.remove();\n                        li.add(new Interval(start, end));\n                        li.add(itv);\n                        inserted = true;\n                        break;\n                    }\n                    \n                    // still some overlap so compare start & end\n                    start = Math.min(start, itv.start);\n                    end = Math.max(end, itv.end);\n                    li.remove();\n                }\n            }\n            \n            if(!inserted){\n                intervals.add(new Interval(start, end));\n            }\n            \n            return intervals;\n        }\n    }
[]