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

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

零、写在前面


        这是打卡的第十九天,今天题目比较简单,就是题量巨大,,主要知识点在


《算法零基础100讲》(第19讲) 进制转换(一) - 入门https://blog.csdn.net/WhereIsHeroFrom/article/details/120875977

https://blog.csdn.net/WhereIsHeroFrom/article/details/120875977


一、主要知识点


       1.十进制转7进制


       其实主要方法就是除留余数法则。


 

while(n){
        ans += n % k;    //取余数
        n /= k;        //除k
    }

二、课后习题


剑指 Offer 15. 二进制中1的个数


剑指 Offer 15. 二进制中1的个数

https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/


主要思想


按照位运算,从1到32位进行扫描就好了。


int hammingWeight(uint32_t n) {
    int count = 0;
    for(int i = 0;i < 32;i++)            //位移统计1个数
        if(n & ((uint32_t)1 << i))    count++;    //1要转换类型 不然默认位int会溢出
    return count;
}

结果分析

image.png



结果还是极好的


258. 各位相加


258. 各位相加

https://leetcode-cn.com/problems/add-digits/


主要思想


利用除留余数法得到10进制的各个和,反复执行直到小于10就好了。

int addDigits(int num){
    int ans = num;        //结果
    while(ans/10){        //和ans < 10没有本质区别
        num = ans;        //num赋值位之前的结果
        ans = 0;            //ans初始化
        while(num){        //统计num中各位和
            ans += num % 10;
            num /= 10;
        }
    }
    return ans;
}


结果分析

image.png



凑合,还行。


1290. 二进制链表转整数


1290. 二进制链表转整数

https://leetcode-cn.com/problems/convert-binary-number-in-a-linked-list-to-integer/


主要思想


每次乘2做加法就好了,有点像2分快速幂的感觉。代码不难,直接看吧。


int getDecimalValue(struct ListNode* head){
    int sum = 0;
    for( ; head; head = head -> next){    //遍历链表
        sum += head-> val;                //加入此节点
        sum *= 2;                          //作位移
    }
    return sum / 2;                //其实先做位移就不需要这个了,期待你们优化
}

结果分析


image.png


还行吧。


1837. K 进制表示下的各位数字总和


1837. K 进制表示下的各位数字总和

https://leetcode-cn.com/problems/sum-of-digits-in-base-k/


主要思想


和上面的某道题没啥区别。


int sumBase(int n, int k){
    int ans = 0;
    while(n){            //除留余数法
        ans += n % k;    
        n /= k;
    }
    return ans;
}

结果分析


image.png


可以了


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



简洁,完美



相关文章
|
20天前
|
算法 C语言
计算机基础(2)——进制与进制转换
进制也就是进位计数制,是人为定义的带进位的计数方法。 对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。
计算机基础(2)——进制与进制转换
|
7月前
|
SQL 算法 数据挖掘
深入探索力扣第12题:整数转罗马数字的算法之旅
深入探索力扣第12题:整数转罗马数字的算法之旅
|
存储 人工智能 算法
2022 数据结构与算法《王道》学习笔记 (十)串 KMP算法 串的总结 课后习题笔记
2022 数据结构与算法《王道》学习笔记 (十)串 KMP算法 串的总结 课后习题笔记
|
C语言 C++
【蓝桥杯刷题】坑爹的负进制转换
【蓝桥杯刷题】坑爹的负进制转换
85 0
|
算法 Java
进制转换(二) - 进阶
进制转换(二) - 进阶
163 0
进制转换(二) - 进阶
每日一题1055:进制转换
题目描述: 编程,输入一个10进制正整数,然后输出它所对应的八进制数。 样例输入:
117 0
|
存储 机器学习/深度学习 算法
[解题报告](第19讲) 进制转换(一) - 入门(2)
[解题报告](第19讲) 进制转换(一) - 入门
[解题报告](第19讲) 进制转换(一) - 入门(2)
[解题报告](第20讲) 进制转换(二) - 进阶
[解题报告](第20讲) 进制转换(二) - 进阶
[解题报告](第20讲) 进制转换(二) - 进阶
|
存储 人工智能 算法
[解题报告]《算法零基础100讲》(第45讲) 位运算 (位或) 进阶
[解题报告]《算法零基础100讲》(第45讲) 位运算 (位或) 进阶
[解题报告]《算法零基础100讲》(第45讲) 位运算 (位或) 进阶
|
机器学习/深度学习 人工智能 算法
[解题报告]《算法零基础100讲》(第42讲) 位运算 (位与) 进阶
[解题报告]《算法零基础100讲》(第42讲) 位运算 (位与) 进阶
[解题报告]《算法零基础100讲》(第42讲) 位运算 (位与) 进阶