Leetcode
Day04
T217存在重复元素
给你一个整数数组 nums
。如果任一值在数组中出现 至少两次 ,返回 true
;如果数组中每个元素互不相同,返回 false
。
-
数组排序,遍历判断
//qsort排序函数的前置比较函数(固定格式) int cmpfunc (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } bool containsDuplicate(int* nums, int numsSize) { qsort(nums, numsSize, sizeof(int), cmpfunc); for (int i = 0; i < numsSize - 1; i++) { if (nums[i] == nums[i + 1]) { return true; } } return false; }
-
哈希表
struct hashTable { int key; UT_hash_handle hh; }; bool containsDuplicate(int* nums, int numsSize) { struct ha hTable* set = NULL; for (int i = 0; i < numsSize; i++) { struct hashTable* tmp; HASH_FIND_INT(set, nums + i, tmp); if (tmp == NULL) { tmp = malloc(sizeof(struct hashTable)); tmp->key = nums[i]; HASH_ADD_INT(set, key, tmp); } else { return true; } } return false; }
学习感悟:
-
mid = (left + right) >> 1,位运算,相当于整除2
-
uhash以宏的方式定义了对哈希函数的操作函数
#include "uthash.h" struct hashTable { int id; /* key */ UT_hash_handle hh; /* makes this structure hashable */ }; struct hashTable *users = NULL; /* important! initialize to NULL */
-
qsort() 函数:
int cmpfunc (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } qsort(nums, numsSize, sizeof(int), cmpfunc);//写在需要进行排序操作的函数里