文档章节

LeetCode:Summary Ranges - 获取数组中数字的范围

北风其凉
 北风其凉
发布于 2015/10/11 11:19
字数 339
阅读 121
收藏 0
点赞 0
评论 0

1、题目名称

Summary Ranges(获取数组中数字的范围)

2、题目地址

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

3、题目内容

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

中文:给出一个整数数组,返回这个数组中数字的范围

例如:给出数组 [0,1,2,4,5,7],返回 ["0->2","4->5","7"]

4、解题方法

本题的解题方法分为以下两步:

1)对数组进行排序

2)从前向后遍历数组,计算区间,并将每个区间放入一个List中

计算完毕后,返回List

Java代码如下:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @功能说明:LeetCode 228 - Summary Ranges
 * @开发人员:Tsybius2014
 * @开发时间:2015年10月11日
 */
public class Solution {
    
    /**
     * 获取数组中数字的范围
     * @param nums 数组
     * @return
     */
    public List<String> summaryRanges(int[] nums) {
        
        Arrays.sort(nums);
        
        List<String> list = new ArrayList<String>();
        
        if (nums.length == 0) {
            return list;
        }
        
        int begin = Integer.MIN_VALUE;
        int end = Integer.MIN_VALUE;
        for (int i = 0; i < nums.length; i++) {
            if (i == 0) {
                begin = nums[i];
            } else if (nums[i - 1] < nums[i] - 1) {
                list.add(getInterval(begin, end));
                begin = nums[i];
            } 
            end = nums[i];
            if (i == nums.length - 1) {
                list.add(getInterval(begin, end));
            }
        }

        return list;
    }
    
    /**
     * 获取两个数字包含的范围
     * @param begin 起始数字
     * @param end 终止数字
     * @return
     */
    private String getInterval(int begin, int end) {
        String result = "";
        if (begin == end) {
            result = String.valueOf(begin);
        } else if (begin < end) {
            result = String.valueOf(begin) + "->" + String.valueOf(end);
        }
        return result;
    }
}

END

© 著作权归作者所有

共有 人打赏支持
北风其凉

北风其凉

粉丝 114
博文 497
码字总数 462457
作品 4
朝阳
程序员
Leetcode 228. Summary Ranges

Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: [0,1,2,4,5,7] Output: ["0->2","4->5","7"] Example 2: Input: [0,2,3,4,6,8,9] ......

ShutLove
2017/12/14
0
0
Leetcode日记6

(2015/11/28) LeetCode 303 Range Sum Query - Immutable:(Easy) 1)超时的算法:每次调用sumRange函数进行一次累加运算。 2)不超时的算法:改变数组的内容,存储从0下标到当前下标所有...

fxdhdu
2015/11/28
73
0
leetcode- Given a sorted integer array without dup

Given a sorted integer array without duplicates, return the summary of its ranges. For example, given , return class Solution {public: vector<string> summaryRanges(vector<int>& ......

thoresa
2015/11/08
0
0
Leetcode日记8

(2015/2/3) LeetCode 4 Median of Two Sorted Arrays 题目大意:找到两个已排序数组的median。 median:中间位置的值。 算法: 参考:https://leetcode.com/discuss/15790/share-my-o-log...

fxdhdu
2016/02/18
94
0
org.apache.hadoop.conf

org.apache.hadoop.conf Configuration of system parameters. 主要作用为配置系统参数 Interface Summary Configurable Something that may be configured with a Configuration. Class Su......

cloudyak
2013/02/14
0
0
LeetCode日记2

LeetCode-5 思路: (1)最后用子字符串操作返回string。 return s.substr(startpos, maxlength); (2)回文串的判断: 1)首先找出回文串中间连续的重复的字符。 2)再向两边进行判断 (3...

fxdhdu
2015/10/19
53
0
[LeetCode] Counting Bits 计数位

Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1's in their binary representation and return them as an array. ......

机器的心脏
2017/12/15
0
0
[LeetCode] Count of Range Sum 区间和计数

Given an integer array , return the number of range sums that lie in inclusive. Range sum is defined as the sum of the elements in between indices and ( ≤ ), inclusive. Note: ......

机器的心脏
2017/12/15
0
0
[LeetCode] Design Log Storage System 设计日志存储系统

You are given several logs that each log contains a unique id and timestamp. Timestamp is a string that has the following format: , for example, . All domains are zero-padded de......

机器的心脏
2017/11/07
0
0
求两递增数组的中位数(O(log(m + n)))你会吗?

原题可以在 LeetCode 上找到,地址:Median of Two Sorted Arrays,难度级别为困难。 不要被困难级别唬到,看完这篇文章,相信你也可以做出来。 乍一看求两递增数组的中位数并不是很难,因为...

Blankj
2017/12/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

线程安全,底层实现原理和JMM

让多线程下的类安全起来:无状态、加锁、让类不可变、栈封闭(方法封装) 、安全的发布对象(不暴露成员) 死锁 一定发生在多个线程争夺多个资源里的情况下,发生的原因是每个线程拿到了某个(某...

这很耳东先生
7分钟前
0
0
MyBatis源码解读之延迟加载

1. 目的 本文主要解读MyBatis 延迟加载实现原理 2. 延迟加载如何使用 Setting 参数配置 设置参数 描述 有效值 默认值 lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延...

无忌
13分钟前
0
0
javascript 类变量的实现

代码如下: function echo(){ for(let i=0;i<arguments.length;i++) console.log(arguments[i]);}function extend(o, p){for (prop in p) {o[prop] = p[prop]}retur......

backbye
17分钟前
0
2
编程语言对比分析:Python与Java和JavaScript(图)

编程语言对比分析:Python与Java和JavaScript(图): 凭什么说“Python 太慢,Java 太笨拙,我讨厌 JavaScript”?[图] 编程语言生而为何? 我们人类从原始社会就是用语言表达自己,互相沟通...

原创小博客
25分钟前
0
0
Akka构建Reactive应用《one》

看到这Akka的官网,描述使用java或者scala构建响应式,并发和分布式应用更加简单,听着很高级的样子,下面的小字写着消息驱动,但是在quickstart里面又写容错事件驱动,就是这么钻牛角尖。 ...

woshixin
37分钟前
0
0
ffmpeg源码分析 (四)

io_open 承接上一篇,对于avformat_open_input的分析还差其中非常重要的一步,就是io_open,该函数用于打开FFmpeg的输入输出文件。 在init_input中有这么一句 if ((ret = s->io_open(s, &s-...

街角的小丑
39分钟前
0
0
String,StringBuffer ,StringBuilder的区别

不同点 一、基类不同 StringBuffer、StringBuilder 都继承自AbStractStringBuilder,String 直接继承自 Object 2、底层容器“不同” 虽然底层都是字符数组,但是String的是final修饰的不可变...

不开心的时候不要学习
54分钟前
0
0
nodejs 文件操作

写文件code // 加载文件模块var fs = require("fs");var content = 'Hello World, 你好世界!';//params 文件名,内容,编码,回调fs.writeFile('./hello.txt',content,'utf8',function (er......

yanhl
56分钟前
0
0
SpringBoot mybits 查询为0条数据 但是在Navicat 中可以查询到数据

1.页面请求: 数据库查询: 2018-07-16 17:56:25.054 DEBUG 17312 --- [nio-9010-exec-3] c.s.h.m.C.selectSelective : ==> Preparing: select id, card_number, customer_id, customer_nam......

kuchawyz
今天
0
0
译:Self-Modifying cod 和cacheflush

date: 2014-11-26 09:53 翻译自: http://community.arm.com/groups/processors/blog/2010/02/17/caches-and-self-modifying-code Cache处在CPU核心与内存存储器之间,它给我们的感觉是,它具......

我叫半桶水
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部