人人都能看懂的leetCode javaScript版 小小记录

41 阅读1分钟

大家有问题欢迎和我留言沟通哦,共同进步~

第1题

image.png

用三种方式解答(其实是2种思路啦,第2、3种是同一个思路,只不过3看起来更优雅些)

暴力解法:

var twoSum = function(nums, target) {
    for(var j = i+1; j < nums.length;j++){
        if(nums[i] + nums[j] === target){
            return [i, j]
        }
    }
};
var arr = [2,7,11,15];
twoSum(arr, 9)

Map实现:

 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    let myMap = new Map()
    for(var i = 0; i < nums.length; i++){
        let wantValue = target - nums[i]
        if(myMap.has(wantValue) ){
            return [myMap.get(wantValue),i];
        }
        myMap.set(nums[i],i);
    }
};
var arr = [2,7,11,15];
twoSum(arr, 9)

优雅的Map实现:

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    const map = new Map()
    for(var i = 0; i < nums.length; i++){
        let complement = target - nums[i]
        if(map.has(complement) ){
            return [map.get(complement),i];
        }else{
            map.set(nums[i],i);
        }
    }
};
var arr = [2,7,11,15];
twoSum(arr, 9)

第2题

image.png

var addTwoNumbers = function(l1, l2) {
    let dummy = new ListNode();
    let curr = dummy;
    let carry = 0;
    while(l1 !== null || l2 !== null){
        let sum = 0;
        if(l1 !== null){
            sum += l1.val;
            l1 = l1.next;
        }
        if(l2 !== null){
            sum +=l2.val;
            l2 = l2.next;
        }

        sum += carry;
        curr.next = new ListNode(sum % 10);
        carry = Math.floor(sum/ 10);
        curr = curr.next
    }
    if(carry > 0){
        curr.next = new ListNode(carry);
    }
    return dummy.next
};