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


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

[uoj228]基础数据结构练习题 解题报告

这题好厉害呀。。看完题一看。。相邻两个数开根号的话差会由a-b变成a√−b√\sqrt a -\sqrt b,相当于除了一个a√+b√\sqrt a+\sqrt b,这样的话很快差就要变成0了,傻逼题...
  • TA201314
  • TA201314
  • 2016年09月11日 16:32
  • 1220

HTTP之Range理解

1、什么是Range?   当用户在听一首歌的时候,如果听到一半(网络下载了一半),网络断掉了,用户需要继续听的时候,文件服务器不支持断点的话,则用户需要重新下载这个文件。而Range支持的话,...
  • hj520wj
  • hj520wj
  • 2015年06月12日 17:28
  • 2356

[LeetCode刷题笔记] 关于LeetCode的前言

又到了一年毕业就业季了,三年前的校招季我逃避了,可这一次终于还是要轮到我了=_=||。 作为要准备踏入码农行业的人来说,要准备校招,怎么能不去刷刷LeetCode呢? LeetCode收录了许多互联网...
  • tostq
  • tostq
  • 2016年07月22日 21:32
  • 2957

Leetcode_228_Summary Ranges

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46762039 Given a sorted in...
  • pistolove
  • pistolove
  • 2015年07月05日 11:07
  • 993

【LeetCode OJ 228】Summary Ranges

题目链接:https://leetcode.com/problems/summary-ranges/ 题目: Given a sorted integer array without dupl...
  • xujian_2014
  • xujian_2014
  • 2015年11月20日 09:49
  • 353

LeetCode228——Summary Ranges

leetcode刷题日记——Summary Ranges 1.题目内容: Given a sorted integer array without duplicates, return the su...
  • u012062841
  • u012062841
  • 2015年07月12日 17:41
  • 371

Leetcode——228. Summary Ranges

题目Given a sorted integer array without duplicates, return the summary of its ranges.For example, giv...
  • starstar1992
  • starstar1992
  • 2017年01月10日 19:09
  • 145

228. Summary Ranges

Given a sorted integer array without duplicates, return the summary of its ranges. For example, giv...
  • iFuMI
  • iFuMI
  • 2016年03月22日 17:13
  • 234

228. Summary Ranges\59. Spiral Matrix II\64. Minimum Path Sum

Summary Ranges 题目描述 代码实现 Spiral Matrix II 题目描述 代码实现 Minimum Path Sum 题目描述 代码实现228. Summary Ranges题目描...
  • c602273091
  • c602273091
  • 2017年02月24日 16:02
  • 278

leetcode--Summary Ranges

题目: Given a sorted integer array without duplicates, return the summary of its ranges. For example...
  • u013830811
  • u013830811
  • 2015年06月26日 16:42
  • 356
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode-228.Summary Ranges
举报原因:
原因补充:

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