LeetCode刷題之數學問題(持續更新)

2021-10-03 14:11:08 字數 1591 閱讀 7229

7. 整數反轉

給定乙個 32 位有符號整數,將整數中的數字進行反轉。

示例 1:

輸入: 123

輸出: 321

示例 2:

輸入: -123

輸出: -321

示例 3:

輸入: 120

輸出: 21

public class solution 

long l = long.parselong(constr.tostring());

if (l > integer.max_value)

if (x >= 0) else

}}

9. 回文數

判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

示例 1:

輸入: 121

輸出: true

示例 2:

輸入: -121

輸出: false

解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是乙個回文數。

示例 3:

輸入: 10

輸出: false

解釋: 從右向左讀, 為 01 。因此它不是乙個回文數。

高階:你能不將整數轉為字串來解決這個問題嗎?

public class solution 

/*方法2:高階解法(數學方法)

通過取整和取餘操作獲取整數中對應的數字進行比較

舉個例子:1221 這個數字

通過計算 1221 / 1000, 得首位1

通過計算 1221 % 10, 可得末位 1

進行比較

再將 22 取出來繼續比較

*/public boolean ispalindrome1(int x)

return true;}/*

方法3:高階解法(數字巧妙處理)

利用回文數的規律,將數字進行對折後看能否一一對應。

注意:回文數的位數可奇可偶,當它的長度是偶數時,它對折過來應該是相等的;

當它的長度是奇數時,那麼它對折過來後,有乙個的長度需要去掉一位數(除以 10 並取整)。

*/public boolean ispalindrome2(int x)

int revertednumber = 0;

while (x > revertednumber)

return x == revertednumber || x == revertednumber / 10;

}}

136. 只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。

說明:你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?

示例 1:

輸入: [2,2,1]

輸出: 1

示例 2:

輸入: [4,1,2,1,2]

輸出: 4

public class solution 

return num;

}}

Leetcode題解之數學問題(3) 3的冪

題目 題目描述 給定乙個整數,寫乙個函式來判斷它是否是 3 的冪次方。示例 1 輸入 27 輸出 true示例 2 輸入 0 輸出 false示例 3 輸入 9 輸出 true示例 4 輸入 45 輸出 false高階 你能不使用迴圈或者遞迴來完成本題嗎?思路 如果是3的冪 一定能被3除剩下1.就將...

Leetcode刷題隨感之「()」問題

從3月份開始刷leetcode到現在,一共刷了401題。其實在刷了100題左右時,我就萌生了要不要把一些我遇到的問題總結一下的想法。但是,那時候的總結更像些奇淫巧計,而不是真正的 技巧 或者說不是一種做題的思想。我覺得我的 思想 是還遠遠不夠的,一種穿透現象看清本質的思想。我一開始的解題思路,往往是...

演算法很美之數學問題

描述 今天我們要認識一對新朋友,alice與bob。alice與bob總是在進行各種各樣的比試,今天他們在玩乙個取石子的遊戲。在這個遊戲中,alice和bob放置了n堆不同的石子,編號1 n,第i堆中有a i 個石子。每一次行動,alice和bob可以選擇從一堆石子中取出任意數量的石子。至少取1顆,...