前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《算法基础学习》进制转换(入门)

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

作者头像
用户9645905
发布2022-11-30 12:36:46
2850
发布2022-11-30 12:36:46
举报
文章被收录于专栏:Linux学习~

目录

算法学习

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

习题解题报告

例题1

例题2

例题3

例题4

例题5

例题6

例题7


算法学习


《算法零基础100讲》(第19讲) 进制转换(一) - 入门_英雄哪里出来-CSDN博客

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

习题解题报告


例题1

二进制中1的个数

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

  • 题目描述:
  • 解题思路:

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

  • 参考代码:
代码语言:javascript
复制
nt hammingWeight(uint32_t n) {
    int i,cnt=0;
    while(n)
    {
        if(n%2==1)
        cnt++;
        n/=2;
    }
    return cnt;
}

例题2

各位相加

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

  • 题目描述:
  • 解题思路:

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

如果是进阶来说,便需要一点数学思想: 这里我们让一个三位数表示成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

  • 参考代码:
代码语言:javascript
复制
int addDigits(int num){
    return (num-1)%9+1;
}

例题3

1290. 二进制链表转整数 - 力扣(LeetCode) (leetcode-cn.com)

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

  • 题目描述:
  • 解题思路:

链表的遍历+进制的思想

  • 参考代码:
代码语言:javascript
复制
/**
 * 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

1837. K 进制表示下的各位数字总和 - 力扣(LeetCode) (leetcode-cn.com)

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

  • 题目描述:
  • 解题思路:

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

  • 参考代码:
代码语言:javascript
复制
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

1399. 统计最大组的数目 - 力扣(LeetCode) (leetcode-cn.com)

https://leetcode-cn.com/problems/count-largest-group/

  • 题目描述:
  • 解题思路:

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

  • 参考代码:
代码语言:javascript
复制
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

504. 七进制数 - 力扣(LeetCode) (leetcode-cn.com)

https://leetcode-cn.com/problems/base-7/

  • 题目描述:
  • 解题思路:

算法学习中已经讲解过了

  • 参考代码:
代码语言:javascript
复制
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

405. 数字转换为十六进制数 - 力扣(LeetCode) (leetcode-cn.com)

https://leetcode-cn.com/problems/convert-a-number-to-hexadecimal/

  • 题目描述:
  • 解题思路:

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

  • 参考代码:
代码语言:javascript
复制
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;

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 算法学习
  • 《算法零基础100讲》(第19讲) 进制转换(一) - 入门_英雄哪里出来-CSDN博客
  • 习题解题报告
    • 例题1
      • 例题2
        • 例题3
          • 例题4
            • 例题5
              • 例题6
                • 例题7
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档