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

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

全文目录

 🎁主要知识点

            计数法的简单应用

 📓课后习题

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

 📑写在最后

今天是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;
}


相关文章
|
6月前
【每日一题Day370】LC318最大单词长度乘积 | 哈希表 位运算
【每日一题Day370】LC318最大单词长度乘积 | 哈希表 位运算
51 1
|
6月前
【每日一题Day176】LC2404出现最频繁的偶数元素 | 哈希表
【每日一题Day176】LC2404出现最频繁的偶数元素 | 哈希表
50 0
【每日一题Day176】LC2404出现最频繁的偶数元素 | 哈希表
|
6月前
【每日一题Day163】LC2367算术三元组的数目 | 二分查找 哈希表
【每日一题Day163】LC2367算术三元组的数目 | 二分查找 哈希表
29 0
|
API
代码随想录 Day5 哈希表1 T242 相同字母的异序词 T349两个数组的交集 T202 快乐数 T1 两数之和(下)
代码随想录 Day5 哈希表1 T242 相同字母的异序词 T349两个数组的交集 T202 快乐数 T1 两数之和(下)
38 0
|
5月前
|
索引
力扣随机一题 6/26 哈希表 数组 思维
力扣随机一题 6/26 哈希表 数组 思维
38 0
|
5月前
力扣随机一题 哈希表 排序 数组
力扣随机一题 哈希表 排序 数组
32 1
|
5月前
|
算法 数据可视化 数据挖掘
力扣136题全解析:寻找只出现一次的数字(哈希表与异或运算详解,附图解)
力扣136题全解析:寻找只出现一次的数字(哈希表与异或运算详解,附图解)
|
Serverless 索引
代码随想录 Day5 哈希表1 T242 相同字母的异序词 T349两个数组的交集 T202 快乐数 T1 两数之和(上)
代码随想录 Day5 哈希表1 T242 相同字母的异序词 T349两个数组的交集 T202 快乐数 T1 两数之和
72 0
【LeetCode36】有效的数独(哈希表)
【LeetCode36】有效的数独(哈希表)
43 0
【每日一题Day71】LC2032至少在两个数组中出现的值 | 哈希表 + 位运算
思路:使用一个哈希表记录每个数字在三个数组中的出现情况,哈希表的key值为数值大小,value值为该数字在数组中的出现情况,从左到右第i位为1则表示该数字在第i个数组中出现过。最后根据value值将至少出现在两个数组中的num添加至结果集
76 0