文档章节

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

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

© 著作权归作者所有

共有 人打赏支持
北风其凉

北风其凉

粉丝 115
博文 498
码字总数 463468
作品 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
nomasp 博客导读:Lisp/Emacs、Algorithm、Android

版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/44966625 Profile Introduction to Blog 您能看到这篇博客导读...

nomasp
2015/09/17
0
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

没有更多内容

加载失败,请刷新页面

加载更多

127.0.0.1 和 0.0.0.0 地址的区别

1. IP地址分类 1.1 IP地址表示 IP地址由两个部分组成,net-id和host-id,即网络号和主机号。 net-id:表示ip地址所在的网络号。 host-id:表示ip地址所在网络中的某个主机号码。 即: IP-a...

华山猛男
10分钟前
1
0
解决Unknown host 'd29vzk4ow07wi7.cloudfront.net'. You may need to adjust the proxy settings in Gradle.

把 总项目 下的 build.gradle 中的 两个 jcenter() 用 maven{ url ‘http://maven.aliyun.com/nexus/content/groups/public/’} 代替。...

lanyu96
16分钟前
1
0
基于redis的分布式锁

redisson提供了基于redis的分布式锁实现方式,本文就尝试了下锁的使用方式。Redisson同时还为分布式锁提供了异步执行的相关方法,第二节执行介绍。 一、可重入锁验证 同一个jvm里面同一线程的...

noob_chr
24分钟前
6
0
CPU性能过剩提升乏力影响未来行业发展吗?

虽然CPU仍然在不断发展,但是它的性能已经不再仅仅受限于单个处理器类型或制造工艺上了。和过去相比,CPU性能提升的步伐明显放缓了,接下来怎么办,成为横亘在整个行业面前的大问题。 自201...

linux-tao
27分钟前
3
0
设计模式“6”大原则!

面向对象设计原则 概述 对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要...

Java干货分享
43分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部