思路:
先排序,再对每个可能的区间进行扩展,当区间两头差值超过 给定范围时,直接进入下一个区间;
class Solution {
public:
int partitionArray(vector<int>& nums, int k) {
int ans = 0;
// 先对数组排序
sort(begin(nums), end(nums));
// 第一个子序列的第一个元素
int start = nums[0];
// 默认记为一个
ans = 1;
for(int i = 1; i < nums.size(); i++){
if(nums[i] - start <= k){
// 如果在当前序列内则直接跳过
continue;
}
// 不在当前序列,则记录下一个序列的开头元素
start = nums[i];
// 序列数累加
ans++;
}
return ans;
}
};