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

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

示例:

给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

answer1:一次遍历-利用数组的方法indexOf

var twoSum = function(nums, target) {
    let result = [];
    let len = nums.length;
    for(var i =  0; i < len; i++){
        let sec = target - nums[i];
        let secIndex = nums.indexOf(sec);
        if (secIndex !== -1 && secIndex !== i){
            result = [i, secIndex];
            return result;
        }
    }
};

//执行用时 :188 ms, 在所有JavaScript提交中击败了20.23%的用户
//内存消耗 :33.9 MB, 在所有JavaScript提交中击败了98.49%的用户

answer2:暴力遍历

var twoSum = function(nums, target) {
    let result = [];
    for (var i =  0; i < nums.length; i++){
        for (var j = i + 1; j< nums.length; j++){
            if (nums[i] + nums[j] === target){
                result = [i ,j]
            }
        }
    }
    return result;
};

//执行用时 :172 ms, 在所有JavaScript提交中击败了25.64%的用户
//内存消耗 :34.7 MB, 在所有JavaScript提交中击败了76.62%的用户

2、给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

var reverse = function(x) {
    const border = 2**31
    const max = border - 1
    const min = -border

    const result = (x > 0 ? 1 : -1) * String(x).split('').filter(x => x !== '-').reverse().join('')
    return result > max || result < min ? 0 : result 
};

3、罗马数字转换成整数
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。

var romanToInt = function(s) {
    let o = {
            'I':1,
            'V':5,
            'X':10,
            'L':50,
            'C':100,
            'D':500,
            'M':1000
        };
    var arr = (`${s}`).split('');
    console.log('arr:',arr);
    //数组的map方法,对每一个值进行操作,将新值放入一个新的数组
    var newArr = arr.map((v)=> o[v]);
    console.log('newArr:',newArr);
    let len = newArr.length;
    for(let i = 0; i < len; i++){
        if (newArr[i] < newArr[i+1]){
            newArr[i] = -newArr[i];
        }
    }
    console.log('newnewArr:',newArr);
    //reduce函数
    return newArr.reduce((pre,cur)=>pre + cur)
};

张长长
67 声望4 粉丝