题目描述
将给定的一个数组分组,要求数组内的最大值与最小值之差小于等于M。输出所分的最小的组数
贪心+双指针
// you can use includes, for example:
#include <algorithm>
#include <cmath>
// you can write to stdout for debugging purposes, e.g.
// cout << "this is a debug message" << endl;
int solution(vector<int> &D, int X) {
// write your code in C++14 (g++ 6.2.0)
int res = 0;
int n = D.size();
for (int i = 0; i < n; i++) {
int j = i+1;
int st = D[i], ed = D[i];
while (j < n && abs(D[j] - st) <= X && abs(D[j] - ed) <= X) {
st = min(st, D[j]);
ed = max(ed, D[j]);
j++;
}
if (D[j] - st > X || ed - D[j] > X ) res++;
i = j - 1;
}
return res;
}

被折叠的 条评论
为什么被折叠?



