脚本宝典收集整理的这篇文章主要介绍了《解题报告》(第19讲) 进制转换(一) - 入门,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
由于进来的晚,前面的算法虽然都补卡了,但是解题报告还没有写完,doing中
《算法零基础100讲》(第19讲) 进制转换(一) - 入门_英雄哪里出来-CSDN博客
剑指 Offer 15. 二进制中1的个数 - 力扣(LeetCode) (leetcode-cn.COM)
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为 汉明重量).)。
示例 1F1a;
输入:n = 11 (控制台输入 00000000000000000000000000001011) 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。
示例 2:
输入:n = 128 (控制台输入 00000000000000000000000010000000) 输出:1 解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。
示例 3:
输入:n = 4294967293 (控制台输入 11111111111111111111111111111101,部分语言中 n = -3) 输出:31 解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。
class Solution {
public:
int hammingWeight(uint32_t n) {
int count=0;
while(n)//条件,n>0,由计算机系统知识与运算可知,把一个整数-1再和原整数做与运算会使最右边的一个1变成0,只需要加一个计数器来计数了
{
n&=(n-1);//先相与再赋值
count++;//计数器
}
return count;
}
};
也许上面的与运算并不是很清晰,下面我将用草纸写出
258. 各位相加 - 力扣(LeetCode) (leetcode-cn.com)
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
示例:
输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
1837. K 进制表示下的各位数字总和 - 力扣(LeetCode) (leetcode-cn.com)
给你一个整数 n(10 进制)和一个基数 k ,请你将 n 从 10 进制表示转换为 k 进制表示,计算并返回转换后各位数字的 总和 。
转换后,各位数字应当视作是 10 进制数字,且它们的总和也应当按 10 进制表示返回。
class Solution {
public:
int addDigITs(int num) {//用递归做
if(num / 10 == 0) // 特殊情况一位数
{
return num;
}
// 拆分成多个数相加
int sum = 0;
while(num)
{
sum += num % 10;//拆分并加和
num /= 10;
}
return addDigits(sum);递归
}
};
示例 1:
输入:n = 34, k = 6 输出:9 解释:34 (10 进制) 在 6 进制下表示为 54 。5 + 4 = 9 。
示例 2:
输入:n = 10, k = 10 输出:1 解释:n 本身就是 10 进制。 1 + 0 = 1 。
简单的短除法
class Solution {
public:
int sumBase(int n, int k) {//
int sum = 0 ;//计算和
while(n){//短除法
sum += n % k;//求几进制就除几取余
n /= k;
}
return sum;
}
};
以上是脚本宝典为你收集整理的《解题报告》(第19讲) 进制转换(一) - 入门全部内容,希望文章能够帮你解决《解题报告》(第19讲) 进制转换(一) - 入门所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。