LeetCode163 Missing Ranges

题目:

       Given a sorted integer array where the range of elements are in the inclusive range {lower, upper}, return its missing ranges

       For example  given{0, 1, 3, 50, 75}, lower =0 and upper = 99, return {"2", "4->49", "51 -> 74", "76->99"} 

     

 

public class QuestionMissingRanges {

    public static void main(String[] args) {
        int[] nums = {0, 1, 3, 50, 75};
        int lower = 0;
        int upper = 99;
        List<String> rst = findMissingRanges(nums, lower, upper);
        System.out.println(rst.toString());
    }

    public static List<String> findMissingRanges(int[] nums, int lower, int upper) {
        //step1 define return value
        List<String> rst = new ArrayList<>();

        //step2 handle corner cases
        if (nums == null || nums.length == 0){
            rst.add(lower + "->" + upper);
            return rst;
        }

        //stop3: Fill in business logic
        //first, add the range after lower
        addToList(rst, lower,nums[0] - 1);
        //second, add all ranges between lower and uppper
        int prev = nums[0];
        int i = 1;
        while(i < nums.length){
            int cur = nums[i];
            if (cur != prev + 1){
                addToList(rst,prev + 1,cur - 1);
            }
            prev = cur;
            i++;
        }
        //third, add the range before uppper
        addToList(rst,nums[nums.length - 1] + 1, upper);
        return rst;
    }

    //supporting method
    public static void addToList(List<String> rst, int start, int end){
        if (start == end){
            rst.add(String.valueOf(start));//convert integer to string
        }else if (start < end){
            rst.add(start + "->" + end);
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值