給出乙個 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 請根據這...