没有人一起从零开始刷力扣(三)- 数与位篇
2327
2020.09.04
2020.09.04
发布于 未知归属地

简介

本文是从零开始刷力扣系列的第三部分,欢迎大家一起讨论、吐槽、提出宝贵意见。在看本篇题解之前,小伙伴们也可以先看看我对刷题顺序的建议。有没有人一起从零开始刷力扣

进制的理解

digit.png
同样是765432,在不同进制下,代表不同的数:在10进制数下,代表。在8进制数下,代表。在16进制数下,代表

k进制转换成十进制

k进制转换为十进制的办法比较简单,直接对应位乘上对应的系数就可以了。参考代码如下:

int ret = 0;
for (int i = 0; i < s.length(); i++) {
    ret = ret * k + s[i] - '0';
}
return ret;

十进制转换成k进制

先思考一个问题,怎么提取k进制的第i位?我们以一个例子来分析这个问题。提取十进制的第2位(从右往左,下标从0开始计算,即百位)。显然,这个数等于。同样,的第3位是。所以,将十进制转换位k进制,我们可以从开始枚举系数,对求模,得到即为第位数。k进制正整数字符串转为十进制的代码如下:

if (num == 0) {
    return "0";
}
string ret;
while (num > 0) {
    ret = (char)(num % k + '0') + ret;
    num /= k;
}
return ret;

数字的位操作

在这部分题目中,关键考察进制转换,进制的理解,以及对数字位的提取与分析。

对应题目及题解

链接
7. 整数反转
9. 回文数
479. 最大回文数乘积
564. 寻找最近的回文数
231. 2的幂
342. 4的幂
326. 3的幂
504. 七进制数
405. 数字转换为十六进制数
171. Excel表列序号
168. Excel表列名称
190. 颠倒二进制位
191. 位1的个数
476. 数字的补数
461. 汉明距离
477. 汉明距离总和
693. 交替位二进制数
393. UTF-8 编码验证
172. 阶乘后的零
458. 可怜的小猪
263. 丑数
357. 计算各个位数不同的数字个数
233. 数字 1 的个数
400. 第N个数字
题解

简单数学题

这部分题目主要考察对数字的敏感度,以及找规律的能力。

对应题目及题解

链接
492. 构造矩形
29. 两数相除
507. 完美数
258. 各位相加
319. 灯泡开关
题解

快速幂

模的性质

对于求模,有以下的性质:

快速幂

快速幂用于求,一般是很大的数。那么,我们可以将分解成进制求和的形式(一般k为2)即。由于,所以。之后,我们将所有的累乘到结果中即可。若要求模,则应用上述的性质2。

对应题目及题解

链接
50. Pow(x, n)
372. 超级次方
题解
评论 (0)