#整数反転アルゴリズムleetcodeの7前端
タイトル説明
32ビット符号付き整数を与え、あなたはそれぞれ逆に、この整数値を必要とします。
例1:
输入: 123
输出: 321
例2:
输入: -123
输出: -321
例3:
输入: 120
输出: 21
注意:
我々は、32ビット符号付き整数、値範囲[-2 ^ 31、2 ^ 31 1 - ]格納することができる環境があると 整数オーバーフローの後、それは0を返し、逆ならば、この仮説によるとしてください。
概要
プロンプト
これは、オーバーフローことに留意すべきです2**31到-(2**31)
解決
再帰サイクル、ノートオーバーフロー条件
ソリューション
あなたはオーバーフローの問題を考慮していない場合は、それがこの質問のJSソリューションは、2つのピットを持っていると、最初のものは可変リフトである、(変な)非常に簡単です、整数は、乗算や除算などの操作を法と、得られる、浮動小数点数に変わりますその結果そこ0!=0
の状況、我々はこれらの結果を使用する必要があるMath.floor
か、~~
彼らは以上で動作することができます前に、ラウンドピックに
アルゴリズム
/**
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
let ans = 0;
while (x !== 0) {
ans = ans * 10 + ~~(x % 10);
x = ~~(x / 10);
}
return (ans >= (2 ** 31) || ans <= -(2 ** 31)) ? 0 : ans;
};
テストケースの着信業績
input:123
output:321
結果
执行用时 :80 ms, 在所有 javascript 提交中击败了94.48%的用户
内存消耗 :35.8 MB, 在所有 javascript 提交中击败了36.81%的用户