- 数据结构
- qsort() & sort()
- qsort(), c
- sort(),c++
- 哈希表
- C 语言
- C++
qsort()函数是C 标准库 -
sort()函数是c++中
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void , const void))
#includesort(),c++#include int cmp(const void* a, const void* b) { return ( *(int*)a - *(int*)b ); //强制转换为int型指针然后解引用。 //升序 } int main(){ qsort(nums, numsSize,sizeof(int),cmp) ; }
#include
bool cmp(int a,int b){
return a>b;
//降序排列
}
int main(){
int a[10]={5,5,6,8,2,1,3};
sort(a,a+10,cmp);//降序排列
}
哈希表
两数之和
https://blog.csdn.net/nameofcsdn/article/details/107297361
哈希表知识
链接: https://blog.csdn.net/nameofcsdn/article/details/107297361
C 语言#include "uthash.h"
struct hashTable {
int key;
int val;
UT_hash_handle hh;
};
struct hashTable* hashtable;
struct hashTable* find(int ikey) {
struct hashTable* tmp;
HASH_FIND_INT(hashtable, &ikey, tmp); //在"uthash.h"里定义的
return tmp;
}
void insert(int ikey, int ival) {
struct hashTable* it = find(ikey);
if (it == NULL) {
struct hashTable* tmp = malloc(sizeof(struct hashTable));
tmp->key = ikey, tmp->val = ival;
HASH_ADD_INT(hashtable, key, tmp);
} else {
it->val = ival;
}
}
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
hashtable = NULL;
for (int i = 0; i < numsSize; i++) {
struct hashTable* it = find(target - nums[i]);
if (it != NULL) {
int* ret = malloc(sizeof(int) * 2);
ret[0] = it->val, ret[1] = i;
*returnSize = 2;
return ret;
}
insert(nums[i], i);
}
*returnSize = 0;
return NULL;
}
C++
class Solution {
public:
vector twoSum(vector& nums, int target) {
unordered_map hashtable;
for (int i = 0; i < nums.size(); ++i) {
auto it = hashtable.find(target - nums[i]);
if (it != hashtable.end()) {
return {it->second, i};
}
hashtable[nums[i]] = i;
}
return {};
}
};
作者:LeetCode-Solution
链接:https://leetcode.cn/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-solution/
来源:力扣(LeetCode)



