[解题报告](第19讲) 进制转换(一) - 入门(2)

简介: [解题报告](第19讲) 进制转换(一) - 入门

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;
}

结果分析

image.png


简洁,完美


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;
}

结果分析


image.png


凑合


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;
}

结果分析


image.png


 还行


三、今日总结


有点卷不动了。还有论文没写,神经网络好难。。。。还有今晚的presentation ,祝我顺利把-.-

相关文章
【LeetCode-每日一题】-67. 二进制求和
【LeetCode-每日一题】-67. 二进制求和
|
2天前
|
算法
刷题专栏(三):二进制求和
刷题专栏(三):二进制求和
42 0
|
Serverless 测试技术
华为机试每日一练--第五题: 进制转换
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。 数据范围:保证结果在 1≤n≤2^31−1
华为机试每日一练--第五题: 进制转换
华为机试每日一练--第七题: 进制转换
华为机试每日一练--第七题: 进制转换
华为机试每日一练--第七题: 进制转换
每日一题1055:进制转换
题目描述: 编程,输入一个10进制正整数,然后输出它所对应的八进制数。 样例输入:
80 0
|
算法 Java
进制转换(二) - 进阶
进制转换(二) - 进阶
112 0
进制转换(二) - 进阶
|
算法 Java 编译器
进制转换(一) - 入门
进制转换(一) - 入门
196 0
|
存储 算法
[解题报告](第19讲) 进制转换(一) - 入门(1)
[解题报告](第19讲) 进制转换(一) - 入门
[解题报告](第19讲) 进制转换(一) - 入门(1)
[解题报告](第20讲) 进制转换(二) - 进阶
[解题报告](第20讲) 进制转换(二) - 进阶
[解题报告](第20讲) 进制转换(二) - 进阶