【第22期】观点:IT 行业加班,到底有没有价值?

LeetCode-228.Summary Ranges

原创 2016年06月01日 16:30:22

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;
    }


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

leetCode No.228 Summary Ranges

题目 Given a sorted integer array without duplicates, return the summary of its ranges. For example,...

LeetCode解题报告汇总

LeetCode解题报告: [LeetCode]1.Two Sum - Yoona - 博客频道 - CSDN.NET <a target="_blank" href="http://blog.csdn.net/sunnyyoona/article/det...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

[Leetcode] 228. Summary Ranges 解题报告

题目: Given a sorted integer array without duplicates, return the summary of its ranges. For e...

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",&q...

Leetcode 228. Summary Ranges (Medium) (cpp)

Leetcode 228. Summary Ranges (Medium) (cpp)
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)