Given a sorted integer array without duplicates, return the summary of its ranges.
For example, given
Solution1: time complexity is O(n), space complexity is O(n).[0,1,2,4,5,7]
, return ["0->2","4->5","7"].
记录两个值 lowBound=nums[i], highBound=nums[i]. 如果nums[i+1] - highBound == 1, 则i++,highBound=nums[i], 继续比较。否则, 插入字符串 lowBound->highBound.
public class Solution { public ArrayListsummaryRanges(int[] nums) { ArrayList res = new ArrayList (); if (nums == null || nums.length == 0) { return res; } for (int i = 0; i < nums.length; i++) { int lowBound = nums[i]; int highBound = nums[i]; while (i < nums.length - 1 && nums[i + 1] - highBound == 1) { i++; highBound = nums[i]; } StringBuilder s = new StringBuilder(); s.append(lowBound); if (lowBound == highBound) { res.add(s.toString()); } else { s.append("->"); s.append(nums[i]); res.add(s.toString()); } } return res; } }
No comments:
Post a Comment