《算法基础学习》进制转换(入门)

简介: 算法学习《算法零基础100讲》(第19讲) 进制转换(一) - 入门_英雄哪里出来-CSDN博客https://blog.csdn.net/WhereIsHeroFrom/article/details/120875977习题解题报告

例题1


题目描述:


45.png

  • 解题思路:

比较基础,取余和除法的使用


  • 参考代码:


nt hammingWeight(uint32_t n) {
    int i,cnt=0;
    while(n)
    {
        if(n%2==1)
        cnt++;
        n/=2;
    }
    return cnt;
}


例题2

题目描述:

46.png


解题思路:

对于一般来说使用循环便可以解决


如果是进阶来说,便需要一点数学思想:


这里我们让一个三位数表示成xyz,那么就有x*100+y*10+z=x*99+y*9+x+y+z


要得到x+y+z则整体%9


这个题得到的结果一定为0-9,如果%9的话结果为0-8,那么先拆出一个1再加上1:


(x*99+y*9+x+y+z+1-1)%9=(x+y+z-1)%9+1%9=(x+y+z-1)%9+1


参考代码:


int addDigits(int num){
    return (num-1)%9+1;
}


例题3


题目描述:

47.png


  • 解题思路:


链表的遍历+进制的思想


  • 参考代码:
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
int getDecimalValue(struct ListNode* head){
    int ret=0;
    struct ListNode*cur=head;
    while(cur)
    {
        ret=ret*2+cur->val;
        cur=cur->next;
    }
    return ret;
}



例题4


题目描述:


48.png


  • 解题思路:

进制转换+各数求和(取余和除法)

  • 参考代码:
int sumBase(int n, int k){
    int ret=0;
    while(n)
    {
        ret=ret*10+n%k;
        n/=k;
    }//得到的数是反过来的,不过并不碍事
    int ans=0;
    while(ret)//简单求各位数和
    {
        ans+=ret%10;
        ret/=10;
    }
    return ans;
}


例题5

题目描述:


49.png


  • 解题思路:


对于各数和的数用标记数组记录,同时记录最大个数,再遍历计数


  • 参考代码:


int countLargestGroup(int n){
    int book[50]={0};//标记各数和数组(各数和有范围)
    int max=0;//记录最大个个数
    int i;
    for(i=1;i<=n;i++)
    {
        int sum=0;
        int tmp=i;
        while(tmp)//各数和
        {
            sum+=tmp%10;
            tmp/=10;
        }
        book[sum]++;//标记和的个数
        if(book[sum]>max)//标记最大
            max=book[sum];
    }
    int cnt=0;//遍历计数
    for(i=1;i<50;i++)
    {
        if(book[i]==max)
        cnt++;
    }
    return cnt;
}



例题6


题目描述:


50.png


  • 解题思路:


算法学习中已经讲解过了


  • 参考代码:


char * convertToBase7(int num){
    char*ret=(char*)malloc(sizeof(char)*20);
    int stack[20]={0},top=0;//数组栈
    int retsize=0;
    if(num<0)//正负号
    {
        ret[retsize++]='-';
        num=-num;
    }
    if(num==0)//特殊情况
    {
        return "0";
    }
    else
    {
        while(num)//反向储存进制数
        {
            stack[top++]=num%7;
            num/=7;
        }
    }
    while(top--)
    {
        ret[retsize++]=stack[top]+'0';//反向转化
    }
    ret[retsize]='\0';//结束符
    return ret;
}


例题7


题目描述:


51.png


  • 解题思路:


再上题基础上再变化一下就可以了


  • 参考代码:


char * toHex(int num){
    char*ret=(char*)malloc(sizeof(char)*20);
    int stack[20]={0},top=0;//数组栈
    int retsize=0;
    unsigned int n=num;//补码运算
    if(n==0)//特殊情况
    {
        return "0";
    }
    else
    {
        while(n)//反向储存进制数
        {
            stack[top++]=n%16;
            n/=16;
        }
    }
    while(top--)
    {
        if(stack[top]>=10)
        {
            ret[retsize++]=stack[top]-10+'a';
        }
        else
        {
            ret[retsize++]=stack[top]+'0';//反向转化
        }
    }
    ret[retsize]='\0';//结束符
    return ret;
}



相关文章
|
2月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】基于多轮课程学习的大语言模型蒸馏算法 TAPIR
阿里云人工智能平台 PAI 与复旦大学王鹏教授团队合作,在自然语言处理顶级会议 EMNLP 2024 上发表论文《Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning》。
|
2月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
2月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
2月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
2月前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
2月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
2月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明
|
2月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构的基本概念;算法的基本概念、特性以及时间复杂度、空间复杂度等举例说明;【含常见的报错问题及其对应的解决方法】
|
2月前
|
机器学习/深度学习 算法 Python
机器学习入门:理解并实现K-近邻算法
机器学习入门:理解并实现K-近邻算法
41 0

热门文章

最新文章