[解题报告]【第31题】无冲突的哈希表问题 | 计数法的简单应用

请添加图片描述


今天是c语言基础打卡的第31天,今天主要是hash表的问题,算是hash表的入门呗。
相关链接:
【第31题】无冲突的哈希表问题 | 计数法的简单应用
全文大约阅读时间: 10min

🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人
✨联系方式:2201891280(QQ)


🎁主要知识点

计数法的简单应用

#include <stdio.h>
#include <string.h>                      // (1)

#define maxn 1000001
int h[maxn];

int main() {
    int n, x;
    int i, j;
    int hasPrint;
    while(scanf("%d", &n) != EOF) {    
        memset(h, 0, sizeof(h));         // 初始化hash表
        while(n--) {
            scanf("%d", &x);
            ++h[x];                      //将每个元素插入
        }
        hasPrint = 0;
        for(i = 0; i < maxn; ++i) {      // 从小到大输出
            if(h[i]) {
                for(j = 0; j < h[i]; ++j) {
                    if(hasPrint) {
                         printf(" ");    //控制格式化输出
                    }
                    printf("%d", i);
                    hasPrint = 1;
                }
            }
        }
        printf("\n");
    }
    return 0;
}

📓课后习题

448. 找到所有数组中消失的数字

448. 找到所有数组中消失的数字

给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。

解题思路

直接创建hash表 然后做统计输出结果就好了。

int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize){
    int innums[100001] ={0};	//hash表
    int *ans = malloc(sizeof(int) * numsSize);
    for(int i =0; i < numsSize;++i)	//插入元素
        innums[nums[i]] = 1;
    int ansnum = 0;	//输出元素个数
    for(int i = 1;i < numsSize + 1; ++i)
        if(!innums[i])  ans[ansnum++] = i;//有点类似于队列的思想
    *returnSize = ansnum;
    return ans;
}

📑写在最后

最近考试,题目还好不难,不然真的是很难坚持下去呀。大家一起加油。这个c语言打卡也是从之前的几十人到现在就十几个人了0.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XingleiGao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值