摘要:題目反轉整數反轉后的整數如果不在范圍則返回簡單解法耗時解法二獲取余數,即從右邊第一位開始的數字保留整數部分解題思路跳出循環,判斷是否在最大值和最小值之間知識點復習小于的最大整數返回四舍五入返回的整數部分,包含正負號
題目
Given a 32-bit signed integer, reverse digits of an integer.
反轉整數
反轉后的整數如果不在[?2^31, 2^31 ? 1]范圍則返回0
Example1
Input: 123 Output: 321
Example2
Input: -123 Output: -321
Example3
Input: 120 Output: 21簡單解法
耗時:100ms
var reverse = function(x) { const max = Math.pow(2,31) -1 const min = -1 * Math.pow(2,31) let arr = String(x).split("").reverse(); const len = arr.length - 1; if(arr[0] === 0){ arr = arr.splice(0,1) } if(arr[len] === "-"){ arr.splice(len,1) arr.unshift("-") } const reverseX = Number(arr.join("")) if(reverseX > max || reverseX < min) return 0 return reverseX };
解法二:
var reverse = function(x) { const MAX = Math.pow(2,31) - 1 const MIN = -1 * Math.pow(2,31) let res = 0; while (x !== 0) { // 獲取余數,即從右邊第一位開始的數字 res = res * 10 + (x % 10); //保留整數部分 x = Math.trunc(x / 10); } return (res > MAX || res < MIN) ? 0 : res; };
解題思路:
234 1: res = 4,x = 23 2: res = 4*10 + (23%10) = 40 + 3 = 43, x: Math.trunc(23/10) = 2 3: res = 43*10 + (2%10) = 430 + 2 = 432 x = Math.trunc(2/10) = 0 跳出while循環,判斷res是否在最大值和最小值之間
知識點復習
Math.floor(x) //小于x的最大整數 Math.floor(-123/10) // -13 Math.floor(x) // 返回四舍五入 Math.round(-126/10) // -13 Math.trunc(x) // 返回x的整數部分,包含正負號 Math.trunc(-123/10) // -12
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/102722.html
摘要:原題描述題目意思從數組中找出返回和在數組中的位置數組中一定存在和相加等于,并且和不能相等解法因為肯定有解,且值不一樣,所以數組只有兩個值的時候這兩個值就為解判斷對象是否有一個為對象的是原來數組的值,是該值的位置其實思路就是然后返回和對應的 原題描述: Given an array of integers, return indices of the two numbers such t...
摘要:用填充一個的矩陣,該矩陣按順時針旋轉方向依次增大,用編程輸出這個數組。要求如下我的思路先生成一個一維的數組這里實現的算法是通過略微修改了然后通過算法實現變化對應賦值方式有點蠢,通過實現還有有所收獲的完整 Q:用0-9填充一個N*N的矩陣,該矩陣按順時針旋轉方向依次增大,用js編程輸出這個數組。要求如下:showImg(https://segmentfault.com/img/bVO7z...
閱讀 3514·2023-04-25 20:09
閱讀 3720·2022-06-28 19:00
閱讀 3035·2022-06-28 19:00
閱讀 3058·2022-06-28 19:00
閱讀 3132·2022-06-28 19:00
閱讀 2860·2022-06-28 19:00
閱讀 3015·2022-06-28 19:00
閱讀 2611·2022-06-28 19:00