LeetCode 228. Summary Ranges(归纳区间)
2016-04-05 05:02
387 查看
原题网址:https://leetcode.com/problems/summary-ranges/
Given a sorted integer array without duplicates, return the summary of its ranges.
For example, given
思路:对每个元素,如果与上一个区间的右端点相差1,则合并区间,否则新开一个区间。
另一种类似的方法:
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"].
思路:对每个元素,如果与上一个区间的右端点相差1,则合并区间,否则新开一个区间。
public class Solution { public List<String> summaryRanges(int[] nums) { Range[] ranges = new Range[nums.length]; int size = 0; for(int i=0; i<nums.length; i++) { if (i > 0 && ranges[size-1].to + 1 == nums[i]) ranges[size-1].to ++; else ranges[size++] = new Range(nums[i], nums[i]); } List<String> results = new ArrayList<String>(); for(int i=0; i<size; i++) { if (ranges[i].from == ranges[i].to) results.add(Integer.toString(ranges[i].from)); else results.add(Integer.toString(ranges[i].from) + "->" + Integer.toString(ranges[i].to)); } return results; } } class Range { int from, to; Range(int from, int to) { this.from = from; this.to = to; } }
另一种类似的方法:
public class Solution { public List<String> summaryRanges(int[] nums) { List<String> ranges = new ArrayList<>(); if (nums == null || nums.length == 0) return ranges; int[] range = new int[] {nums[0], nums[0]}; for(int i=1; i<=nums.length; i++) { if (i<nums.length) { if (range[1]+1 == nums[i]) { range[1] = nums[i]; } else { if (range[0] == range[1]) ranges.add(Integer.toString(range[0])); else ranges.add(Integer.toString(range[0]) + "->" + Integer.toString(range[1])); range[0] = nums[i]; range[1] = nums[i]; } } else { if (range[0] == range[1]) ranges.add(Integer.toString(range[0])); else ranges.add(Integer.toString(range[0]) + "->" + Integer.toString(range[1])); } } return ranges; } }
相关文章推荐
- 请咬牙
- 基于协同过滤,NMF和Baseline的推荐算法
- LeetCode 227. Basic Calculator II(基本计算器II)
- ASP.NET MVC 4 (一)路径映射
- Android实现双进程守护
- lintcode-medium-Restore IP Addresses
- filter_var() 验证邮箱、ip、url的格式 php
- 学习总结HTML CSS JAVASCRIPT,对三剑客的一些理解
- Quartz中时间表达式的设置-----corn表达式
- 神经网络梯度下降的三种学习方式
- LeetCode 226. Invert Binary Tree(反转二叉树)
- Yii2框架下,使用Codeception进行单元测试
- hadoop学习笔记
- redis 主从复制 【待验证】
- django之创建第7-6-第三种传值方式
- redis 设置认证密码
- android 选择本地图片并截剪图片保存到,sdcard指定目录中
- centos redis 安装
- LeetCode 190. Reverse Bits
- Storm 准备(一)