在這個看臉的時代,連看財經資訊都不免俗地要在抖音上「刷」一刷。
話說,抖音上那些自稱能讓你「躺賺」的財經博主們,真是五花八門,應有盡有。然鵝,最近上演的一出「豬圈大戰」可是讓不少吃瓜群眾大開眼界。
「愛理財的小羊」直言「宋宇飛」竟然把公眾號賣給了殺豬盤,害得一大批粉絲成了無辜的小白鼠,試驗了什麽叫做「親人兩行淚」。
宋宇飛則火速反擊,說自己是清白的,還放出了律師函,意思是「我要告到你懷疑人生」。
這場「口水戰」不僅讓兩位主角火了一把,也讓背後那條所謂的財經博主賣號產業鏈曝光了。原來,這裏面的門道比小區大媽打麻將還復雜。
博主們先是在各大平台上秀出自己獨到的投資理財「絕技」,吸引一波又一波的粉絲。等到粉絲量一上去,便開始了「割韭菜」的節奏。
聽著就跟看電視劇似的,讓人又氣又樂。氣的是,那些辛辛苦苦追的博主,可能只是為了最後那一筆「見血封喉」的交易。樂的是,原來這世上真有那麽多不怕事大的人,為了錢能玩出這麽多花樣。
說回被騙的粉絲們,他們最初可能只是抱著學習投資理財的心態,結果卻發現自己成了別人眼中的「韭菜」。這種被背叛的感覺,比虧錢還難受。所以啊,各位,追星追博主也好,切記要開啟你的智商保護模式,別輕易給人「割韭菜」的機會。
下面是今天的演算法題
# 整數反轉
演算法題目
給你一個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
總結
整數反轉是一個基礎且實用的編程題目,透過這個問題,我們不僅可以練習基本的整數操作,還可以學習如何處理邊界條件和溢位問題。掌握這個演算法,對於提高編程能力有很大的幫助。
熱門推薦