我是靠谱客的博主 美满小懒猪,最近开发中收集的这篇文章主要介绍LeetCode 热题 HOT 100(JavaScript)1.两数之和2. 两数相加3.无重复字符的最长字串4.寻找两个正序数组的中位数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

LeetCode 热题 HOT 100(JavaScript)

  • 1.两数之和
  • 2. 两数相加
  • 3.无重复字符的最长字串
  • 4.寻找两个正序数组的中位数

1.两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。

var twoSum = function(nums, target) {
    if(nums.length<2) return -1//判断数组内多于两个数
    for(var i=0;i<nums.length;i++){
        for(var j=i+1;j<nums.length;j++){
            if(nums[i]+nums[j]==target){
                return [i,j]
            }
        }
    }
};

2. 两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

var addTwoNumbers = function(l1, l2) {
    const l3=new NodeList()
    let h1=l1
    let h2=l2
    let h3=l3
    let carry = 0 //用来存储进的位
    while(h1||h2){//还存在
        var v1=h1?h1.val:0//没有取完,就取值
        var v2=h2?h2.val:0
        var v3=v1+v2+carry//加起来
        carry=Math.floor(v3/10)//十位
        h3.next=new NodeList(v3%10)//新链表存储个位
        if(h1) h1=h1.next//往后移
        if(h2) h2=h2.next
        h3=h3.next
    }
    if(carry){//最后进的数放放最后
        h3.next=new NodeList(carry)      
    }
    return l3.next

};

3.无重复字符的最长字串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

var lengthOfLongestSubstring = function(s) {
    let arr =[];//新建数组存子串
    let max = 0;
    for(let i=0;i<s.length;i++){
        if(arr.indexOf(s[i])!==-1){//indexof指定字符串首次出现的位置,如果没有返回-1
            arr.splice(0,arr.indexOf(s[i])+1);//splice进行删除,0位置的1个元素

        }
        arr.push(s[i]);
        max=Math.max(max,arr.length)
    }
    return max;

};

4.寻找两个正序数组的中位数

给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。

var findMedianSortedArrays = function (nums1, nums2) {
    let p1=nums1
    let p2=nums2
    let p3=[...p1,...p2]//数组合并
    //var p3=nums1.concat(nums2)//数组合并
    let p4=p3.sort((a,b)=>a-b)//正序排序
    let n=p4.length
    if(!p4){
        return 0
    }else{
        if(n%2!=0){
            let i=Math.floor(n/2)//向下取整
            return p4[i]
        }else{
            let j=Math.floor(n/2)-1
            return (p4[j]+p4[j+1])/2
        }
    }
}

最后

以上就是美满小懒猪为你收集整理的LeetCode 热题 HOT 100(JavaScript)1.两数之和2. 两数相加3.无重复字符的最长字串4.寻找两个正序数组的中位数的全部内容,希望文章能够帮你解决LeetCode 热题 HOT 100(JavaScript)1.两数之和2. 两数相加3.无重复字符的最长字串4.寻找两个正序数组的中位数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部