JS leetcoe.7练习 —— 问题:数组APi容易记不住

题目:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

注意点:
1、类似1000这种数字,反转了之后不是0001,而是1
2、32位interger的取值范围,
思路1:
数组方法,利用数组APi组合就可以了

var reverse = function(x) {
    var symbol = '+';
    arr = (x + '').split('');
    if(arr[0] === '-'){
       symbol = arr.shift()
       }
    arr = arr.reverse();
    while(arr[0] === 0){
          arr[0].shift();
          }
    arr.unshift(symbol);
    arr = arr.join('');
    y = parseInt(arr)
    y = y < Math.pow(2,31) - 1 && y > -Math.pow(2,31) ? y : 0 ;
    return y
};

思路2:
模十法,初始化一个result = 0,把给定的数字n除以十,得到余数作为第一位,商作为新的数字n,result = result*10 + 余数 % 10,循环后得到答案。

var reverse = function(x) {
    var symbol = '+';
    arr = (x + '').split('');
    if(arr[0] === '-'){
       symbol = arr.shift()
       }
    arr = arr.reverse();
    while(arr[0] === 0){
          arr[0].shift();
          }
    arr.unshift(symbol);
    arr = arr.join('');
    y = parseInt(arr)
    y = y < Math.pow(2,31) - 1 && y > -Math.pow(2,31) ? y : 0 ;
    return y
};

备注:
pow() 方法可返回 x 的 y 次幂的值。
split()方法用于把一个字符串分割成字符串数组。
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
parseInt() 第一位为 ‘+’ 或 '-'的时候不会报错, '+‘会被忽略 ,’-'会转为负数。

猜你喜欢

转载自blog.csdn.net/weixin_44089544/article/details/87204480
今日推荐