Algorithms


Simply

进制转换

const parseInt = (line) => {
    // 最简单的方法
    // let a = parseInt(line, 16);
    // console.log(a);
    // 通过转换进制计算。
    // 0xaa
    // a*16^0 + a* 16 ^ 1 
    const str = line.substr(2);
    const LetterMap = {A: 10, B:11, C:12, D:13, E:14, F:15};
    let iter = 0;
    const d = (n) => (n < 10 ? n : LetterMap[n])
    for(let i = str.length - 1; i >= 0; i--){
        iter = iter + d(str[i])*16**(str.length - 1 - i);
    }
    console.log(iter)
}
parseInt('0xAA')

两数之和

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param numbers int整型一维数组 
 * @param target int整型 
 * @return int整型一维数组
 */
function twoSum( numbers ,  target ) {
    // write code here
    // 暴力
    // const len = numbers.length;
    // for (let i = 0; i<= len-1; i++) {
    //     for(let j = i+ 1; j<=len-1;j++){
    //         if(numbers[i] + numbers[j] === target){
    //             return [i+1, j+1];
    //         }
    //     }
    // }
    // map
    const map = new Map();
    for(let i = 0; i <= numbers.length; i++){
        if(map.has(target - numbers[i])){
            return [map.get(target - numbers[i]), i+1]
        }else {
            map.set(numbers[i], i + 1)
        }
    }
}
module.exports = {
    twoSum : twoSum
};

Map的思想是

  • 判断条件, map中存在目标值-当前值的剩余值
  • 如果存在就返回存储的下标,不存在就塞入当前项

  TOC