LeetCode-228.Summary Ranges

https://leetcode.com/problems/summary-ranges/

Given a sorted integer array without duplicates, return the summary of its ranges.

For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"].

琢磨半天写出来的代码,用了二分法,虽然比较繁琐

public IList<string> SummaryRanges(int[] nums) 
    {
        int start, precur, cur = -1, n = nums.Length, left = 0;
        IList<string> res = new List<string>();
        while (cur != n - 1)
        {
            start = cur + 1;
            precur = n - 1;
            cur = precur;
            while (nums[cur] - nums[start] != cur - start)
            {
                precur = cur;
                cur = (start + cur) / 2;
            }
            if (cur == n - 1)
            {
                if (cur == start)
                    res.Add(nums[cur].ToString());
                else
                    res.Add(nums[start] + "->" + nums[cur]);
                break;
            }
            while (left + 1 != precur)
            {
                if (nums[cur] - nums[start] == cur - start)
                {
                    left = cur;
                    cur = (precur + cur) / 2;
                }
                else
                {
                    precur = cur;
                    cur = (left + cur) / 2;
                }
            }
            if (cur == start)
                res.Add(nums[cur].ToString());
            else
                res.Add(nums[start] + "->" + nums[cur]);
        }
        return res;
    }


不用二分法,直接搜索

public IList<string> SummaryRanges(int[] nums) 
    {
        int start = 0, end = 0, n = nums.Length;
        IList<string> res = new List<string>();
        while (end < n)
        {
            if (end + 1 < n && nums[end + 1] - nums[end] == 1)
                end++;
            else
            {
                if (start == end)
                    res.Add(nums[end].ToString());
                else
                    res.Add(nums[start] + "->" + nums[end]);
                start = end = end + 1;
            }
        }
        return res;
    }


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zmq570235977/article/details/51557041
文章标签: leetcode
个人分类: LeetCode
上一篇LeetCode-153.Find Minimum in Rotated Sorted Array
下一篇LeetCode-347.Top K Frequent Elements
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭