damong刷leetcode第一天。

我的目标是嵌入式电机方向的高手,所以我使用的是C语言。
#include <stdlib.h>
typedef struct{
int key;
int val;
UT_hash_handle hh;
} HashTable;
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
HashTable *hash = NULL;
HashTable *item;
for(int i = 0;i<numsSize;i++){
int A = target - nums[i];
HASH_FIND_INT(hash,&A,item);
if(item){
int* result = malloc(sizeof(HashTable));
result[0] = item->val;
result[1] = i;
*returnSize = 2;
return result;
}
else {
item = (HashTable*)malloc(sizeof(HashTable));
item->key = nums[i];
item->val = i;
HASH_ADD_INT(hash, key, item);
}
}
*returnSize = 0;
return NULL;
}
这道题有两种经典解法,一个是双for,另一个就是哈希。双for不过多解释,这里的代码例程是哈希。说的超过100%我也不知道他这个评判具体是怎样的,提交三次最低91.5%左右。
其中在力扣中不用添加uthash.h文件,也不用引用这个头文件。对于mcu来说一味追求时间不是一件明智的事情,比如在查找判断中条件为真的分支里面malloc可以不用申请那么大的内存空间申请int*2就可以了,但是这样更快。这时候有人问了,那我直接写malloc(8)不就又省空间又快吗,就像我刚才说的我想成为嵌入式电机方向的高手,我怎么知道那些奇怪东西把int当成几个字节?这样写省我。(说是成为电机方向的高手,其实我之前就是在参加比赛的时候用过有刷电机和舵机,不过很快我就能成为机王)


被折叠的 条评论
为什么被折叠?



