You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从整数数组中找出由所有不同值组成的最大组数

解决数组可组成完整唯一元素组的数量问题

先通过两个实际例子明确问题场景:

  • 给定数组 {2,4,2,4,3,2,3},去重后得到唯一元素集合 {2,3,4}。统计每个元素的出现次数:2出现3次,3出现2次,4出现2次。能组成的完整组(每组必须包含所有唯一元素)的数量就是最小的元素出现次数,也就是2组。
  • 再比如数组 {1,2,1,3,4,4,3,3},去重后是 {1,2,3,4},各元素计数:1出现2次,2出现1次,3出现3次,4出现2次。最小计数是1,所以只能组成1组。

我的Java实现方案

核心思路是先统计每个元素的出现频率,再找到频率的最小值,这个值就是能组成的完整组数量:

int arr[] = {2,3,4,2,4,3,2};
Map<Integer, Integer> map = new HashMap<>();

// 遍历数组,统计每个元素的出现次数
for(int i = 0; i < arr.length; i++) {
    int count = map.getOrDefault(arr[i], 0) + 1;
    map.put(arr[i], count);
}

// 找出所有元素出现次数中的最小值
int min = Integer.MAX_VALUE;
for(int count : map.values()) {
    if(count < min) {
        min = count;
    }
}

System.out.println("可组成的完整组数量:" + min);

思路拆解

  1. 统计元素频率:用HashMap记录每个元素的出现次数,getOrDefault方法可以简化不存在元素的计数初始化(默认取0,再加1),避免空指针问题。
  2. 确定最大组数:因为每个完整组都必须包含所有唯一元素,所以能组成的组数完全受限于出现次数最少的元素——它的出现次数就是最多能组成的完整组数量。

内容的提问来源于stack exchange,提问作者Manoj Suthar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:43:50