题目:2294. 划分数组使最大差为 K
思路:贪心+数组,升序排序。维护当前数组的最小值即可,时间复杂度0(nlogn)。
C++版本:
cpp
class Solution {
public:
int partitionArray(vector<int>& nums, int k) {
int ans=0;
sort(nums.begin(),nums.end());
int right=INT_MIN/2;
for(auto x:nums){
if(x-right>k){
ans++;
right=x;
}
}
return ans;
}
};
JAVA版本:
java
class Solution {
public int partitionArray(int[] nums, int k) {
int ans=0;
Arrays.sort(nums);
int right=Integer.MIN_VALUE/2;
for(var x:nums){
if(x-right>k){
ans++;
right=x;
}
}
return ans;
}
}
Go版本:
go
func partitionArray(nums []int, k int) int {
slices.Sort(nums)
ans:=0
left:=math.MinInt/2
for _,x:=range nums {
if x-left>k {
ans++
left=x
}
}
return ans
}