全文目录
🎁主要知识点
计数法的简单应用
📓课后习题
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; }