在这个看脸的时代,连看财经资讯都不免俗地要在抖音上「刷」一刷。
话说,抖音上那些自称能让你「躺赚」的财经博主们,真是五花八门,应有尽有。然鹅,最近上演的一出「猪圈大战」可是让不少吃瓜群众大开眼界。
「爱理财的小羊」直言「宋宇飞」竟然把公众号卖给了杀猪盘,害得一大批粉丝成了无辜的小白鼠,试验了什么叫做「亲人两行泪」。
宋宇飞则火速反击,说自己是清白的,还放出了律师函,意思是「我要告到你怀疑人生」。
这场「口水战」不仅让两位主角火了一把,也让背后那条所谓的财经博主卖号产业链曝光了。原来,这里面的门道比小区大妈打麻将还复杂。
博主们先是在各大平台上秀出自己独到的投资理财「绝技」,吸引一波又一波的粉丝。等到粉丝量一上去,便开始了「割韭菜」的节奏。
听着就跟看电视剧似的,让人又气又乐。气的是,那些辛辛苦苦追的博主,可能只是为了最后那一笔「见血封喉」的交易。乐的是,原来这世上真有那么多不怕事大的人,为了钱能玩出这么多花样。
说回被骗的粉丝们,他们最初可能只是抱着学习投资理财的心态,结果却发现自己成了别人眼中的「韭菜」。这种被背叛的感觉,比亏钱还难受。所以啊,各位,追星追博主也好,切记要开启你的智商保护模式,别轻易给人「割韭菜」的机会。
下面是今天的算法题
# 整数反转
算法题目
给你一个32位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超出32位的有符号整数的范围 [−2^31, 2^31 − 1],就返回 0。
假设环境不允许存储64位整数(有符号或无符号)。
引言
整数反转是一个简单但是非常实用的问题,在很多编程和算法面试中都会遇到。这个问题不仅可以帮助我们复习整数的基本操作,还能够让我们更加注意到边界条件的处理。下面将通过几种编程语言来实现整数反转的算法。
算法思路
整数反转的基本思路是每次取出整数的最后一位,然后加到反转后的整数上。在这个过程中,需要注意几个关键点:
如何取出整数的最后一位:可以通过对10取余(x % 10)来实现。
如何移除整数的最后一位:可以通过整除10(x / 10)来实现。
如何检查反转后的整数是否溢出:在将下一位添加到反转后的整数之前,先检查是否会导致溢出。
代码实现
Python实现
defreverse(x: int) -> int:
INT_MAX, INT_MIN = 2**31 - 1, -2**31
rev = 0
while x != 0:
# 检查是否溢出
if rev < INT_MIN // 10 + 1or rev > INT_MAX // 10:
return0
digit = x % 10if x > 0else x % -10
x = x // 10if x > 0else (x + (-x % 10)) // 10
rev = rev * 10 + digit
return rev
Java实现
publicintreverse(int x) {
int rev = 0;
while (x != 0) {
if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {
return0;
}
int digit = x % 10;
x /= 10;
rev = rev * 10 + digit;
}
return rev;
}
C语言实现
intreverse(int x) {
int rev = 0;
while (x != 0) {
if (rev < INT_MIN / 10 || rev > INT_MAX / 10) {
return0;
}
int digit = x % 10;
x /= 10;
rev = rev * 10 + digit;
}
return rev;
}
算法解析
整数反转算法的时间复杂度为O(log(x)),其中x是输入的整数,因为每次迭代我们都会将输入整数的最后一位去掉,直到整数变为0。空间复杂度为O(1),因为我们只需要常数空间存储几个变量。
示例和测试
输入:x = 123
输出:321
输入:x = -123
输出:-321
输入:x = 120
输出:21
总结
整数反转是一个基础且实用的编程题目,通过这个问题,我们不仅可以练习基本的整数操作,还可以学习如何处理边界条件和溢出问题。掌握这个算法,对于提高编程能力有很大的帮助。
热门推荐