(LeetCode 每日一题) 2966. 划分数组并满足最大差限制 (贪心、排序)

题目:2966. 划分数组并满足最大差限制


思路:升序排序,然后每三个数进行比较,时间复杂度0(nlogn)。

C++版本:

cpp 复制代码
class Solution {
public:
    vector<vector<int>> divideArray(vector<int>& nums, int k) {
        sort(nums.begin(),nums.end());
        vector<vector<int>> v;
        for(int i=2;i<nums.size();i+=3){
            if(nums[i]-nums[i-2]>k){
                return {};
            }
            v.push_back({nums[i-2],nums[i-1],nums[i]});
        }
        return v;
    }
};

JAVA版本:

java 复制代码
class Solution {
    public int[][] divideArray(int[] nums, int k) {
        Arrays.sort(nums);
        int[][] v=new int[nums.length/3][];
        for(int i=2;i<nums.length;i+=3){
            if(nums[i]-nums[i-2]>k){
                return new int[][]{};
            }
            v[i/3]=new int[]{nums[i-2],nums[i-1],nums[i]};
        }
        return v;
    }
}

Go版本:

go 复制代码
func divideArray(nums []int, k int) [][]int {
    slices.Sort(nums)
    v:=make([][]int,len(nums)/3)
    for i:=2;i<len(nums);i+=3 {
        if nums[i]-nums[i-2]>k {
            return nil
        }
        v[i/3]=[]int{nums[i-2],nums[i-1],nums[i]}
    }
    return v
}
相关推荐
2401_841495647 分钟前
【计算机视觉】分水岭实现医学诊断
图像处理·人工智能·python·算法·计算机视觉·分水岭算法·医学ct图像分割
liulilittle28 分钟前
网络编程基础算法剖析:从字节序转换到CIDR掩码计算
开发语言·网络·c++·算法·通信
Kent_J_Truman37 分钟前
【第几小 / 分块】
算法·蓝桥杯
搂鱼11451440 分钟前
sosdp
算法
祈祷苍天赐我java之术1 小时前
Redis 有序集合解析
java·前端·windows·redis·缓存·bootstrap·html
艾醒1 小时前
探索大语言模型(LLM):参数量背后的“黄金公式”与Scaling Law的启示
人工智能·算法
艾醒1 小时前
探索大语言模型(LLM):使用EvalScope进行模型评估(API方式)
人工智能·算法
刀客1231 小时前
C++ 面试总结
开发语言·c++·面试
greentea_20132 小时前
Codeforces Round 65 B. Progress Bar(71)
c++·算法
序属秋秋秋2 小时前
《C++进阶之C++11》【智能指针】(下)
c++·笔记·学习·面试·c++11·智能指针·新特性