領扣刷題 leetcode 07

2022-07-20 19:15:08 字數 1160 閱讀 8422

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例 2:

示例 3:

假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。

#includeint reverse(int x);

int main()

//-2147483648~2147483647 10位

int reverse(int x); //這是大於0情況的

int a[10] = ;//初始化,不然當x=0是會出現bug

int ifpositive = 1;//這個引數是為了記錄該數為正或為負

int result = 0;

printf("%d\n", x);

if (x < 0)

printf("%d\n",x);

int i = 0;

while (x) //出來後i的最大值為10

if (i == 10)

else if (a[j] > b[j])

else

}if (j == 9)}}

result = a[0];

for (int j = 1; j < i; j++)

return ifpositive ? result : -result;

}

在除錯過程中我發現測試內容有乙個為x=-2147483648,終於知道了為什麼無法通過測試,當為32位int時,-2147483648轉為正數也會因為溢位變為2147483647(正向最大)+1=-2147483648,但是我也不知道這應該怎麼解決,有大佬啊知道的話請帶帶我

看了官方的解法我感覺我還是太菜了

手動轉下c語言

int reverse(int x) 

return rev;

}

複習一下c語言負數取餘的知識

嗯 比如-7%3=-1 就是 -7+3+3=-1

然後寫一句提醒自己,這不是彙編,把數字拆分成陣列並不會提公升速度(我也不太清楚,反正這樣寫很麻煩,大概效能提公升也不明顯),可我就是個強迫症......,反正下次不這樣寫了

嘛 感覺官方這個演算法很神秘,我可能一時半會想不出來,時間複雜度是o(log(x)) 空間複雜度是o(1)

leetcode07 整數翻轉

寫的很亂,可讀性差 1.沒有考慮完轉化之前與之後的溢位問題 採用long替換int 2.c c 中的取餘數的運算和一般的數 算不同,負數的取餘數會出 現餘數為負數 3.採用if else 顯得太麻煩 4.寫 前想好變數的命名 int reverse int m if y 0 x long x whi...

整數反轉 LeetCode 07

題目描述 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 2 31,2 31 1 請根據這個假設,如果反轉後整數溢位那麼就返回 0。示例 示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出...

Leetcode 07 整數反轉

文章目錄 題目 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這...