(LeetCode 面试经典 150 题 ) 228. 汇总区间 (数组)
题目:228. 汇总区间
思路:数组,时间复杂度0(n)。
当前数和后面的数不符合要求时,即: i==n-1 || nums[i]+1!=nums[i+1] ,直接处理当前区间[l,i]即可。
C++版本:
class Solution {
public:vector<string> summaryRanges(vector<int>& nums) {vector<string> v;int n=nums.size();if(n==0) return v;int l=0;for(int i=0;i<n;i++){if( i==n-1 || nums[i]+1!=nums[i+1]){if(l==i){v.push_back(to_string(nums[l]));}else{v.push_back(to_string(nums[l])+"->"+to_string(nums[i]));}l=i+1;}}return v;}
};
JAVA版本:
class Solution {public List<String> summaryRanges(int[] nums) {List<String> v=new ArrayList<>();int n=nums.length;if(n==0) return v;int l=0;for(int i=0;i<n;i++){if(i==n-1 || nums[i]+1!=nums[i+1]){if(l==i){v.add(Integer.toString(nums[l]));}else{v.add(nums[l]+"->"+nums[i]);}l=i+1;}}return v;}
}
GO版本:
func summaryRanges(nums []int) []string {v:=[]string{}n:=len(nums)if n==0 {return v}l:=0for i:=0;i<n;i++ {if i==n-1 || nums[i]+1!=nums[i+1] {if l==i {v=append(v,strconv.Itoa(nums[l]))}else{v=append(v,strconv.Itoa(nums[l])+"->"+strconv.Itoa(nums[i]))}l=i+1;}}return v;
}