摘要:题目反转整数反转后的整数如果不在范围则返回简单解法耗时解法二获取余数,即从右边第一位开始的数字保留整数部分解题思路跳出循环,判断是否在最大值和最小值之间知识点复习小于的最大整数返回四舍五入返回的整数部分,包含正负号
题目
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
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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...
阅读 3480·2023-04-25 20:09
阅读 3691·2022-06-28 19:00
阅读 3007·2022-06-28 19:00
阅读 2999·2022-06-28 19:00
阅读 3062·2022-06-28 19:00
阅读 2839·2022-06-28 19:00
阅读 2976·2022-06-28 19:00
阅读 2583·2022-06-28 19:00