@@ -0,0 +1,1624 @@
+public class SearchForRange %7B%0A    /** %0A     *@param A : an integer sorted array%0A     *@param target :  an integer to be inserted%0A     *return : a list of length 2, %5Bindex1, index2%5D%0A     */%0A    public ArrayList%3CInteger%3E searchRange(ArrayList%3CInteger%3E A, int target) %7B%0A        ArrayList%3CInteger%3E rst = new ArrayList%3CInteger%3E();%0A        rst.add(-1);%0A        rst.add(-1);%0A        if (A == null %7C%7C A.size() == 0) %7B%0A            return rst;%0A        %7D%0A        int start = 0;%0A        int end = A.size() - 1;%0A        int mid;%0A        while (start + 1 %3C end) %7B%0A            mid = start + (end - start)/2;%0A            if (A.get(mid) %3E target) %7B%0A                end = mid;%0A            %7D else if (A.get(mid) %3C target) %7B%0A                start = mid;%0A            %7D else %7B%0A                end = mid; // run to left%0A            %7D%0A        %7D%0A        if (A.get(start) == target) %7B%0A            rst.set(0, start);%0A        %7D else if (A.get(end) == target) %7B%0A            rst.set(0, end);%0A        %7D else %7B%0A            return rst;%0A        %7D%0A        %0A        start = 0;%0A        end = A.size() - 1;%0A        while (start + 1 %3C end) %7B%0A            mid = start + (end - start)/2;%0A            if (A.get(mid) %3E target) %7B%0A                end = mid;%0A            %7D else if (A.get(mid) %3C target) %7B%0A                start = mid;%0A            %7D else %7B%0A                start = mid; // run to right%0A            %7D %0A        %7D%0A        if (A.get(end) == target) %7B // must check right first%0A            rst.set(1, end);%0A        %7D else if (A.get(start) == target) %7B%0A            rst.set(1, start);%0A        %7D else %7B%0A            return rst;%0A        %7D%0A        return rst;%0A    %7D%0A%7D%0A

Create SearchForRange.java