leetcode_645. 错误的集合
2022/3/3 23:45:37
本文主要是介绍leetcode_645. 错误的集合,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。
给定一个数组 nums 代表了集合 S 发生错误后的结果。
请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。
示例 1:
输入:nums = [1,2,2,4]
输出:[2,3]
示例 2:
输入:nums = [1,1]
输出:[1,2]
哈希表
1 /** 2 * Note: The returned array must be malloced, assume caller calls free(). 3 */ 4 int* findErrorNums(int* nums, int numsSize, int* returnSize){ 5 int *hash = (int *)malloc(sizeof(int) * (numsSize + 1)); 6 memset(hash, 0, sizeof(int) * (numsSize + 1)); 7 8 *returnSize = 2; 9 int *res = (int *)malloc(sizeof(int) * 2); 10 for(int i = 0; i < numsSize; i++) { 11 hash[nums[i]]++; 12 } 13 for(int i = 1; i < numsSize + 1; i++) { 14 if(hash[i] == 2) { 15 res[0] = i; 16 }else if(hash[i] == 0) { 17 res[1] = i; 18 } 19 } 20 return res; 21 }
ut_hash
1 struct my_struct{ 2 int key; 3 int val; 4 UT_hash_handle hh; 5 }; 6 7 struct my_struct *users = NULL; 8 9 void add_user(int keyid) { 10 struct my_struct *s; 11 HASH_FIND_INT(users, &keyid, s); 12 if(s == NULL) { 13 s = (struct my_struct *)malloc(sizeof(struct my_struct)); 14 s->key = keyid; 15 s->val = 1; 16 ////HASH_ADD_INT第二个参数传入是结构体定义key字段名称 17 HASH_ADD_INT(users, key, s); 18 } else { 19 s->val++; 20 //HASH_ADD_INT(users, key, s); 这里不用重新 add 21 } 22 } 23 24 int find_user(int keyid) { 25 struct my_struct *s; 26 HASH_FIND_INT(users, &keyid, s); 27 if(s == NULL){ 28 return 0; 29 }else if(s->val == 2) { 30 return 2; 31 } 32 return 1; 33 } 34 35 36 int* findErrorNums(int* nums, int numsSize, int* returnSize){ 37 users = NULL; 38 *returnSize = 2; 39 int *res = (int *)calloc(2, sizeof(int)); 40 41 //存哈希表 42 for(int i = 0; i < numsSize; i++) { 43 add_user(nums[i]); 44 } 45 46 //遍历哈希表里面的值 , 从 1 -》 numsSize , 找出 key id 没有的 和 val ==2 的值 47 for(int i = 1; i <= numsSize; i++) { 48 if(find_user(i) == 2) { 49 res[0] = i; 50 } 51 if(find_user(i) == 0) { 52 res[1] = i; 53 } 54 } 55 return res; 56 }
这篇关于leetcode_645. 错误的集合的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享