JavaScript版leetcode源码(持续更新)小白第一次进行刷题

来源:互联网 发布:托福网络课程视频 编辑:程序博客网 时间:2024/05/16 23:55
、、第一题
 * @param {number[]} nums * @param {number} target * @return {number[]} */var twoSum = function(nums, target) {    var result=[];    for(var i=0;i<nums.length-1;i++){        for(var j=i+1;j<nums.length;j++){            if(nums[i]+nums[j]==target){                result.push(i);                result.push(j);                return result;            }        }       }    return false;};
//第二题
/** * Definition for singly-linked list. * function ListNode(val) { *     this.val = val; *     this.next = null; * } *//** * @param {ListNode} l1 * @param {ListNode} l2 * @return {ListNode} */var addTwoNumbers = function(l1, l2) {    var sum=l1.val+l2.val;    var next1=l1.next;    var next2=l2.next;var l3 = new ListNode(sum%10);//初始化l3var node=l3;//更新node的同时更新l3sum = Math.floor(sum/10);//进位,如果有的话while(next1 || next2 || sum!==0){    //next1或者next2为空时补充为0    //当两个都为空且没有进位的时候的时候停止,有进位的话还需要补充一个进位sum += (next1?next1.val:0)+(next2?next2.val:0);node.next = new ListNode(sum%10);node = node.next;next1 = next1?next1.next:null;next2 = next2?next2.next:null;sum = Math.floor(sum/10);}return l3;};

//第三题

/** * @param {string} s * @return {number} */var lengthOfLongestSubstring = function(s) {    //边界值判断,如果是空串返回0    if(s===''){//js用===进行判断        return 0;    }    var maxLength=1;//如果不是空,初始最大值就应该是1    var nextChar;//用来判断下一个字符是否可以包含在最大串中    var currentLength=1;//用来记录当前子串的长度,初始为1    for(var i=1;i<s.length;i++){        nextChar=s.substr(i-currentLength,currentLength).indexOf(s[i]);        if(nextChar===-1){//目前的最大子串中不包含下一个字符,最大子串加1            currentLength++;        }else{//包含下一个字符,从第一个重复字符的下一个位置开始从新判断            currentLength-=nextChar;        }        if(maxLength<currentLength){            maxLength=currentLength;//更新最大子串长度        }    }    return maxLength;};
【注】:在判断当前字符是否在当前子串中的时候,截取当前最大长度子串一定要使用s.substr(start,length),第一次我使用了s.substring(start,end),来进行截取,两者的参数是不同的,作为一个小白不是很在意这些,越学越明白啊!!!共勉

//第四题

思想:将两个数组合并,之后进行排序,由于js排序默认是字母序,因此需要对排序函数协商排序规则。

排好序之后的合并数组寻找中间数即可

/** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number} */function NumAscSort(a,b){    return a-b;}var findMedianSortedArrays = function(nums1, nums2){    var maxLen=nums1.length+nums2.length;    if(nums1.length===0&&nums2.length===0){        return 0;    }    for(var i=0;i<nums2.length;i++){        nums1.push(nums2[i]);    }    nums1.sort(NumAscSort);    if(maxLen%2===1){        return nums1[Math.floor(maxLen/2)];    }else{        //return nums1;        return (nums1[maxLen/2-1]+nums1[maxLen/2])/2;    }};
【注】:不能新建一个数组来存合并后的数组,因为这样空间占用率不符合规则,可以用一个数组来push另一个数组

0 0