(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
}
相关推荐
杰_happy几秒前
设计模式:原型模式(C++)
c++·设计模式·原型模式
OpenC++3 分钟前
【C++】简单工厂模式/工厂方法模式/抽象工厂模式对比
c++·设计模式·简单工厂模式·工厂方法模式·抽象工厂模式
虾球xz30 分钟前
CppCon 2016 学习:BUILDING A MODERN C++ FORGE FOR COMPUTE AND GRAPHICS
开发语言·c++·学习
一坨阿亮32 分钟前
MyBatis原理
java·开发语言·mybatis
এ᭄画画的北北1 小时前
力扣-139.单词拆分
算法·leetcode
完美的奶酪1 小时前
Leetcode-2537. 统计好子数组的数目
算法·leetcode
伊欧温1 小时前
最大公约数
c语言·算法
不太可爱的叶某人1 小时前
【学习笔记】深入理解Java虚拟机学习笔记——第7章 虚拟机类加载机制
java·笔记·学习
时光追逐者2 小时前
.NET初级软件工程师面试经验分享
经验分享·面试·职场和发展·c#·.net·.netcore
CUIYD_19892 小时前
Spring MVC 处理静态资源请求 - ResourceHandler
java·spring·mvc