1399. 统计最大组的数目
1399. 统计最大组的数目
https://leetcode-cn.com/problems/count-largest-group/
主要思想
利用hash表存储所有和的值对应元素个数,顺带统计最大值,返回就好了
int countLargestGroup(int n){ int f[37] = {0},max=0; //记录最大值、记录相应和的数目hash表 for(int i = 1;i <= n; i++){ //从1到n做统计 int count = 0,temp = i; //统计个数初始化 while(temp){ //除留余数法 count += temp%10; temp /= 10; } f[count]++; //相应的值+1 if(f[count] > max) max = f[count];//更新max值 } int ans = 0; //判断最终的答案 for(int i = 0;i < 37;i++){ if(f[i] == max) ans++; //看看等于max的有几个 } return ans; }
结果分析
简洁,完美
504. 七进制数
504. 七进制数
https://leetcode-cn.com/problems/base-7/
主要思想
转换为7进制数。就用算法求就好了,但是要注意负数的处理,个人觉得没必要用fabs,小于0的时候增加负号的时候顺带把值取-n就好了呗。
char * convertToBase7(int num){ char *s = malloc(sizeof(char) * 15); //申请空间 int stack[15]; //利用栈反转数组 int count = 0,countnum = 0; if(num == 0) s[count++] = '0'; //0的处理 if(num < 0){ //负值的处理 s[count++] = '-'; //插入符号 num = -num; //取反 } while(num){ stack[countnum++] = num % 7; //入栈 num /= 7; //除留余数 } int i = countnum; //栈的统计量 while(i--){ s[count++] = stack[--countnum] + '0';//出栈入数组 } s[count] = 0; //将最后的值置为0表示结束 上面是count++,所以count是大了1的这里不用+1 return s; }
结果分析
凑合
405. 数字转换为十六进制数
405. 数字转换为十六进制数
https://leetcode-cn.com/problems/convert-a-number-to-hexadecimal/
主要思想
直接强制变成unsigned 就直接打印反码了,小技巧把。
char * toHex(int num){ char s[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};//16进制表示 char *ans = malloc(sizeof(char) * 9);//返回的要malloc或者选择全局变量,但是还是malloc比较好 int count = 0,stack[8],countnum = 0;//利用栈反序 if(num == 0) ans[count++] = '0'; //0的特殊判定 unsigned int a = num; //直接做强转可以用位移 while(a){ stack[countnum++] = a % 16; //入栈 a /= 16; } while(countnum){ ans[count++] = s[stack[--countnum]]; //出栈入数组 } ans[count] = 0; //标记结束 return ans; }
结果分析
还行
三、今日总结
有点卷不动了。还有论文没写,神经网络好难。。。。还有今晚的presentation ,祝我顺利把-.-