《牛客网算法进阶班》视频教程笔记

第一章

大部分机器一秒钟可接受的操作大约在 $10^8$.

题目一: 判断一个整数是否为回文数

解法一: 先转成字符串再计算回文

至少需要遍历两遍

解法二: 借助 help

help 代表最高位的阶数, 于是 num/help 就可以得到第一位的数字, num%10 就可以得到最后一位的阶数, 然后对 num 进行除法和取余, 使得去掉两端, 同时 help/100, 继续下一次判断.

不用转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (n < 0) {
return false;
}

int help = 1;

while (n / help >= 10) {
help = help * 10;
}
while (n != 0) {
if (n / help != n % 10) {
return false;
}
n = (n % help) / 10;
help /= 100;
}
return true;

题目二:

题目三:

题目四:

题目五:

题目六: