今日任务:1. 两数之和 理解哈希表,提交第二周学习小结题意:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。
题目链接:https://leetcode.cn/problems/two-sum/
视频链接:https://www.bilibili.com/video/BV1vkNGehEun/
今日收获:第一次将哈希表从文字理解转化为代码,写的时候不是很熟练遇到了些问题,哈希表的运用不够熟练,不过解法还是很好理解的。
structhashTable{intkey;intval;UT_hash_handle hh;};structhashTable*hashtable;structhashTable*find(intikey){structhashTable*tmp;HASH_FIND_INT(hashtable,&ikey,tmp);returntmp;}voidinsert(intikey,intival){structhashTable*it=find(ikey);if(it==NULL){structhashTable*tmp=malloc(sizeof(structhashTable));tmp->key=ikey,tmp->val=ival;HASH_ADD_INT(hashtable,key,tmp);}else{it->val=ival;}}int*twoSum(int*nums,intnumsSize,inttarget,int*returnSize){hashtable=NULL;for(inti=0;i<numsSize;i++){structhashTable*it=find(target-nums[i]);if(it!=NULL){int*ret=malloc(sizeof(int)*2);ret[0]=it->val,ret[1]=i;*returnSize=2;returnret;}insert(nums[i],i);}*returnSize=0;returnNULL;}