leetcode刷题(第一天)

1.two sum:

解法一:

function sum(arr,target){
            var len = arr.length;
            for(var i=0;i<len;i++){
                for(var j=0;j<len;j++){
                    if(i!=j){
                        var sum = arr[i]+arr[j];
                        if(sum === target){
                            return [i,j];
                        }
                    }
                }
            }
        }

解法二:(更优)
        var twoSum = function(nums, target) {
            let obj = [];
            var arr = [];
            for(let i = 0; i < nums.length; i++) {
            let othNum = target - nums[i];
            let othIndex = nums.indexOf(othNum);
            if(othIndex != -1 && othIndex != i) {
            arr.push( i, othIndex);
            break;
            }
            }
            return arr;
        };
        var arr = [2,7,3,5];
        console.log(twoSum(arr,9));[0,1];

2.addTwoNumbers

数组形式传参:

[2,6,4] [5,4,3]

结果:

[7,0,8]

function ListNode(val) {
          this.val = val;
          this.next = null;
         }
        var addTwoNumbers = function(l1, l2) {

            /* step() function recursively iterates through a ListNode linked list */
            const step = (l1, l2, carry=0) => {
                /* l1 or l2 can be null - double bang to cast to bool for null check */
                const sum = (!!l1 ? l1.val : 0) + (!!l2 ? l2.val : 0) + carry
                let listnode = new ListNode(sum)

                /* if either l1.next exists or l2.next exists */
                if ((!!l1 && !!l1.next) || (!!l2 && !!l2.next)) {
                    listnode.next = step(
                        !!l1 ? l1.next : null, 
                        !!l2 ? l2.next : null, 
                        sum > 9 ? 1 : 0
                    )
                } else if (sum > 9) {
                    /* final carry */
                    listnode.next = new ListNode(1)
                }

                /* only keep LSD */
                //这里slice的目的是假如和是两位数,保留各位,即使是一位数以可以保留个位(始终保留各位)
                listnode.val = parseInt(listnode.val.toString().slice(-1))
                return listnode;
            }

            return step(l2, l1)
        };
 

猜你喜欢

转载自blog.csdn.net/hahahahahahahaha__1/article/details/81836429