文档章节

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

北风其凉
 北风其凉
发布于 2015/10/11 11:19
字数 339
阅读 274
收藏 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

© 著作权归作者所有

北风其凉

北风其凉

粉丝 124
博文 497
码字总数 462305
作品 4
朝阳
程序员
私信 提问
加载中

评论(0)

LeetCode 228. 汇总区间

1. 题目 给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/summary-ranges 著作权归领扣网络所有。商业转载请联...

Michael阿明
05/14
0
0
[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"]Explanation: 0,1,2 form a continuous......

osc_dk3cdlqm
2018/06/20
0
0
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
124
1
[LeetCode] 852. Peak Index in a Mountain Array 山形数组的顶峰坐标

<br>Let's call an array a mountain if the following properties hold: There exists some such that Given an array that is definitely a mountain, return any such that . Example 1: ......

osc_panqs2jh
2019/03/13
2
0

没有更多内容

加载失败,请刷新页面

加载更多

小师妹学JavaIO之:文件写入那些事

简介 小师妹又对F师兄提了一大堆奇奇怪怪的需求,要格式化输出,要特定的编码输出,要自己定位输出,什么?还要阅后即焚?大家看F师兄怎么一一接招吧。 字符输出和字节输出 小师妹:F师兄,上...

flydean
26分钟前
12
1
直接显示StackOverflow的答题日期, 增加评论区回复的时间显示 ,修改时间显示到小时分。

// ==UserScript==// @name 直接显示StackOverflow的答题日期, 增加评论区回复的时间显示 ,修改时间显示到小时分。// @namespace http://tampermonkey.net/// @version ...

FalconChen
今天
36
0
Shader笔记_005 纹理

纹理最初的目的就是使用一张图片来控制模型的外观,通过纹理映射技术 我们可以把一张图粘贴在物体表面,逐纹素的控制模型的颜色。 通常美术建模的时候也会在软件里利用纹理展开技术把纹理展开成...

STONE-CITY
今天
12
0
iOS MVVM 与RAC结合使用

MVVM配合 RAC 更能发挥的淋漓尽致。 我们把 MVVM 第一篇的例子 KVO 的事件 替换成 配合RAC 框架使用, OC的话直接导入 : pod 'ReactiveObjC' Swift 直接用 RXSwift就可以。 把 ViewModel里加...

T型人才追梦者
今天
22
1
OSChina 周一乱弹 —— 影响心情的三座大山

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《浮生(inst.)》- 忘乡 / 墨凡悦 手机党少年们想听歌,请使劲儿戳(这里) @凝小紫...

小小编辑
今天
110
2

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部