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

int[]数组中仅出现一次元素的次数打印问题求助

解决数组中仅出现一次数字的次数统计问题

嘿,我完全懂你现在的困扰——本来想统计数组里那些只出现一次的数字的情况,结果现在的代码只能输出某个由count定义的固定数字的次数,完全没达到预期。咱们一步步拆解问题,把它搞定。

问题根源分析

我猜你之前的代码大概是类似这样的:硬编码了某个特定数字,然后遍历数组统计它的次数,比如:

// 错误示例(Java)
int[] arr = {1,2,2,3,4,4};
int count = 0;
int target = 1; // 固定死了要统计的数字
for(int num : arr){
    if(num == target) count++;
}
System.out.println(count);

或者是在遍历的时候临时判断,但逻辑没处理好,导致只抓到了某一个符合条件的数字,而不是所有。核心问题就是没有先全局统计所有元素的出现频率,而是只针对单个数字做了统计。

正确解决方案:先统计频率,再筛选结果

解决思路很清晰:先遍历数组,把每个数字的出现次数记录下来,然后再从记录里找出那些次数为1的数字,输出它们的信息(或者统计这样的数字总数)。

示例代码(Java)

import java.util.HashMap;
import java.util.Map;

public class UniqueNumberStats {
    public static void main(String[] args) {
        int[] numbers = {2, 3, 2, 4, 5, 4, 6, 7, 7};
        
        // 第一步:用HashMap统计每个数字的出现次数
        Map<Integer, Integer> frequencyMap = new HashMap<>();
        for (int num : numbers) {
            // 若数字已存在,次数+1;不存在则初始化为1
            frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) + 1);
        }
        
        // 第二步:筛选并输出仅出现一次的数字及其次数
        System.out.println("仅出现一次的数字及对应次数:");
        int totalUniqueNumbers = 0;
        for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()) {
            if (entry.getValue() == 1) {
                System.out.printf("数字 %d:%d 次\n", entry.getKey(), entry.getValue());
                totalUniqueNumbers++;
            }
        }
        
        // 可选:统计这类数字的总数
        System.out.printf("\n一共有 %d 个仅出现一次的数字\n", totalUniqueNumbers);
    }
}

示例代码(Python)

def analyze_unique_numbers(arr):
    # 第一步:用字典统计频率
    frequency_dict = {}
    for num in arr:
        frequency_dict[num] = frequency_dict.get(num, 0) + 1
    
    # 第二步:筛选并输出结果
    print("仅出现一次的数字及对应次数:")
    unique_total = 0
    for num, count in frequency_dict.items():
        if count == 1:
            print(f"数字 {num}:{count} 次")
            unique_total += 1
    print(f"\n一共有 {unique_total} 个仅出现一次的数字")

# 测试用例
test_array = [2, 3, 2, 4, 5, 4, 6, 7, 7]
analyze_unique_numbers(test_array)

为什么这个方法有效?

通过哈希表(Java的HashMap/ Python的字典),我们可以一次性把数组里所有元素的出现次数都记录下来,相当于建立了一个“数字-次数”的映射表。之后只需要遍历这个映射表,就能轻松筛选出所有次数为1的数字,而不是局限于某个固定数字。

这样修改之后,不管数组里有多少个仅出现一次的数字,都能被准确统计和输出啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:29:37