SOURCE

// 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

// 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

// 你可以按任意顺序返回答案。

 

// 示例 1:

// 输入:nums = [2,7,11,15], target = 9
// 输出:[0,1]
// 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
// 示例 2:

// 输入:nums = [3,2,4], target = 6
// 输出:[1,2]
// 示例 3:

// 输入:nums = [3,3], target = 6
// 输出:[0,1]

const findSumIndex = (nums,target) => {
    const len = nums.length;

    for(let i = 0;i < len; i ++) {
        let other = target - nums[i];
        for(let j = i + 1;j < len;j++) {
            if(nums[j] === other) {
                return [i,j];
            }
        }
    };

    return []
}


// 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

// 请你将两个数相加,并以相同形式返回一个表示和的链表。

// 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

 

// 示例 1:


// 输入:l1 = [2,4,3], l2 = [5,6,4]
// 输出:[7,0,8]
// 解释:342 + 465 = 807.
// 示例 2:

// 输入:l1 = [0], l2 = [0]
// 输出:[0]
// 示例 3:

// 输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
// 输出:[8,9,9,9,0,0,0,1]

const addTwoNumbers = function(arr1,arr2) {
    const l1 = arr1.join('');
    const l2 = arr2.join('');

    const num1 = Number(l1);
    const num2 = Number(l2);

    const sum = num1 + num2;
    const strArray = `${sum}`.split('');

    const len = strArray.length;

    const result = [];

    console.log('enter====',sum,len);

    for(let j = len -1;j >=0;j-- ) {
        result.push(strArray[j]);
    }

    return result;
};

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

 

// 示例 1:

// 输入: s = "abcabcbb"
// 输出: 3 
// 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。注意 "bca" 和 "cab" 也是正确答案。
// 示例 2:

// 输入: s = "bbbbb"
// 输出: 1
// 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
// 示例 3:

// 输入: s = "pwwkew"
// 输出: 3
// 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
//      请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

const lengthOfLongestSubstring  = function(s) {
    const sArray = s.split('');
    const len = sArray.length;

    let maxLengh = 1;

    const map = new Map();

    for(let i = 0;i < len;i ++) {
        map.set(sArray[i],i);
       for(let j = i + 1;j < len;j++) {
          if(!map.has(sArray[j])) {
              map.set(sArray[j],j);
          } else{
              let cumpLenth = [...map.values()].length;
              if(cumpLenth > maxLengh){
                  maxLengh = cumpLenth;
              };
              map.clear();
          }
       }
    };

    return maxLengh;
};

// 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。

// 算法的时间复杂度应该为 O(log (m+n)) 。

 

// 示例 1:

// 输入:nums1 = [1,3], nums2 = [2]
// 输出:2.00000
// 解释:合并数组 = [1,2,3] ,中位数 2
// 示例 2:

// 输入:nums1 = [1,2], nums2 = [3,4]
// 输出:2.50000
// 解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5

const findMedianSortedArrays = function(arr1,arr2) {
    const len1 = arr1.length;
    const len2 = arr2.length;
    const connectArray = [];

    const maxLenth = len1 + len2;

    let i = 0;
    let j = 0;

    for(let k =0;k < maxLenth;k++) {
        if(arr1[i] < arr2[j]) {
            connectArray[k] = arr1[i];
            i +=1;
        }else{
            connectArray[k] = arr2[j] || arr1[j];
            j +=1;
        }
    };

    console.log('enter==',connectArray);

    if(maxLenth % 2 === 0) {
        const middleIndex = Math.floor(maxLenth / 2);

        return (connectArray[middleIndex] + connectArray[middleIndex - 1]) / 2; 
    }else{
         const middleIndex = Math.floor(maxLenth / 2);
        return connectArray[middleIndex];
    }
};
console 命令行工具 X clear

                    
>
console