// C char * getHint(char * secret, char * guess){ int len = strlen(secret); int As[10] = {0}; int Bs[10] = {0}; int A = 0,B = 0; char * res = (char *) malloc (sizeof(char) * 9); for(int i = 0; i < len; i++){ if(secret[i] == guess[i]) A++; else{ As[secret[i] - '0']++; Bs[guess[i] - '0']++; } } for(int i = 0; i < 10; i++){ if(As[i] > 0 && Bs[i] > 0) B += As[i] > Bs[i] ? Bs[i] : As[i]; } sprintf(res,"%dA%dB",A,B); return res; }
1979. 找出数组的最大公约数
解题思路
先使用 qsort 对数组进行排序,然后利用辗转相除法求出最大公约数
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// C intcmp(void * a, void * b){ return * (int *) a - * (int *)b; } intfindGCD(int* nums, int numsSize){ qsort(nums, numsSize, sizeof(int), cmp); int max = nums[numsSize - 1]; int min = nums[0];
int n= max % min; while(n) { max = min; min = n; n= max % min; } return min; }