LeetCode:汇总区间【228】
题目描述
给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。
示例 1:
输入: [0,1,2,4,5,7] 输出: ["0->2","4->5","7"] 解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。
示例 2:
输入: [0,2,3,4,6,8,9] 输出: ["0","2->4","6","8->9"] 解释: 2,3,4 可组成一个连续的区间; 8,9 可组成一个连续的区间。
题目分析
Java题解
class Solution { public List<String> summaryRanges(int[] nums) { List<String> ans = new ArrayList<>(); if(nums.length<1) return ans; int len = nums.length; int[] dp = new int[len]; dp[0]=1; for(int i=1;i<len;i++) { if(nums[i]==nums[i-1]+1) dp[i]=dp[i-1]+1; else dp[i]=1; } int ptr = 0 ; while(ptr<len) { int start = nums[ptr++]; String s =start+"->"; while(ptr<len&&dp[ptr]!=1) ptr++; ptr--; int end = nums[ptr++]; if(start==end) s=""+start; else s+=end; ans.add(s); } return ans; } }