LeetCode:Summary interval [228]
Title Description
Given an array of ordered integers without repeating elements, returns the sum of the array interval ranges.
Example 1:
Input: [0,1,2,4,5,7] Output: ["0->2","4->5","7"] Explanation:0,1,2 It can form a continuous interval, and 4,5 can form a continuous interval.
Example 2:
Input: [0,2,3,4,6,8,9] Output: ["0","2->4","6","8->9"] Explanation:2,3,4 It can form a continuous interval, and 8,9 can form a continuous interval.
Topic analysis
JavaAn explanation
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;
}
}