[LeetCode]Summary Ranges
来源:互联网 发布:java是操作系统吗 编辑:程序博客网 时间:2024/05/22 12:54
Question
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"]
.
本题难度Medium。
迭代法
复杂度
时间 O(N) 空间 O(1)
思路
题目有个条件是:数字是已排序的,目的是找出连续的子序列。
因此,我们开始遍历该数组,用start记录子序列的起始序号:只要数字是连续的就不予以处理,直到不连续或者遍历结束就开始记录该range。每当遍历完一个range,就把它记录到结果中,并更新start。这里的技巧是,判断一个数是否是在range内的,只要nums[start + range] - nums[start] == range
就行了,即值之差等于下标之差。
注意
- 第11行的条件不要漏了:
start+range<nums.length
- 第17行不要写成
sb.append(nums[start+range]);
代码
public class Solution { public List<String> summaryRanges(int[] nums) { //require List<String> ans = new LinkedList<>(); if(nums.length<1)return ans; int start = 0; StringBuilder sb = new StringBuilder(); //invariant while(start<nums.length){ int range = 1; while(start+range<nums.length&&nums[start+range]-nums[start]==range) range++; //record sb.append(nums[start]); if(range>1){ sb.append("->"); sb.append(nums[start+range-1]); } ans.add(sb.toString()); //next loop start = start + range; sb = new StringBuilder(); } //ensure return ans; }}
0 0
- leetcode 228: Summary Ranges
- Leetcode 228 Summary Ranges
- leetcode--Summary Ranges
- LeetCode 228: Summary Ranges
- [leetcode] Summary Ranges
- 【Leetcode】Summary Ranges
- Summary Ranges - LeetCode 228
- 【LeetCode】Summary Ranges
- [LeetCode]Summary Ranges
- [leetcode] Summary Ranges
- [leetcode][array] Summary Ranges
- leetcode[228]:Summary Ranges
- [LeetCode] Summary Ranges
- #leetcode#Summary Ranges
- leetcode summary-ranges
- Leetcode|Summary Ranges
- [leetCode] Summary Ranges
- [leetcode]Summary Ranges
- MySQL、SQL Server中字符串拼接
- SearchView的基本使用示例
- linux 安装svn,并设置钩子来同步更新
- 2016最新iOS开发证书配置和安装的详细步骤攻略
- HDU 2028 Lowest Common Multiple Plus
- [LeetCode]Summary Ranges
- 数据库SQL优化大总结之 百万级数据库优化方案
- 监视器–JAVA同步基本概念
- python画图——matplotlib.plot 学习
- SimpleDateFormat转换的时间比真实时间多8小时
- 安卓开发-简单创建SQLite
- 机器学习——K-近邻(KNN)算法
- easyui 表单验证扩展
- 【JavaEE】经典JAVA EE企业应用实战-读书笔记12