zoukankan      html  css  js  c++  java
  • 【LeetCode】Missing Ranges

    Missing Ranges

    Given a sorted integer array where the range of elements are [lower, upper] inclusive, 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"].

    逐个数组元素遍历,将间隙取出即可。注意两边的情况。

    class Solution {
    public:
        vector<string> findMissingRanges(int A[], int n, int lower, int upper)
        {
            vector<string> ret;
            if(n == 0)
                return ret;
            string str;
            if(lower < A[0])
            {
                if(lower < A[0]-1)
                    str = to_string((long long)lower) + "->" + to_string((long long)A[0]-1);
                else
                    //lower == A[0]-1
                    str = to_string((long long)lower);
                ret.push_back(str);
            }
            for(int i = 1; i < n; i ++)
            {
                if(A[i] - A[i-1] < 2)
                    continue;
    
                if(A[i] - A[i-1] > 2)
                    str = to_string((long long)A[i-1]+1) + "->" + to_string((long long)A[i]-1);
                else
                    //A[i] - A[i-1] == 2
                    str = to_string((long long)A[i-1]+1);
                ret.push_back(str);
            }
            if(A[n-1] < upper)
            {
                if(A[n-1] < upper-1)
                    str = to_string((long long)A[n-1]+1) + "->" + to_string((long long)upper);
                else
                    //upper == A[n-1]+1
                    str = to_string((long long)upper);
                ret.push_back(str);
            }
            return ret;
        }
    };

    以下是我的测试用例,全部通过:

    void display(vector<string>& ret)
    {
        for(int i = 0; i < ret.size(); i ++)
        {
            cout << ret[i] << " ";
        }
        cout << endl;
    }
    
    int main()
    {
        Solution s;
        int A[1];
        //expect: ["0->9"]
        vector<string> ret = s.findMissingRanges(A, 0, 0, 9);
        display(ret);
    
        int B[1] = {6};
        //expect: ["0->5", "7->9"]
        ret = s.findMissingRanges(B, 1, 0, 9);
        display(ret);
    
        int C[3] = {0, 1, 2};
        //expect: []
        ret = s.findMissingRanges(C, 3, 0, 2);
        display(ret);
    
        int D[5] = {0, 1, 3, 50, 75};
        //expect: ["2", "4->49", "51->74", "76->99"]
        ret = s.findMissingRanges(D, 5, 0, 99);
        display(ret);
    }
  • 相关阅读:
    MySQL 5.7 在windows下修改max_allowed_packet变量
    linux(redhat)安装jdk1.8
    linux安装jdk1.8之后报错Error: dl failure on line 893的解决办法
    Java中List Set Map 是否有序等总结
    面试题吐槽系列之一
    面试算法——快速排序
    推荐系统——online(上)
    推荐系统架构
    零基础开始推荐系统
    视觉显著性优秀硕士论文总结
  • 原文地址:https://www.cnblogs.com/ganganloveu/p/4195893.html
Copyright © 2011-2022 走看看