力扣刷题第一天

一、力扣1两数之和(Map直接搞定)

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

};

二、力扣2 两数相加(链表遍历+进位)

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var addTwoNumbers = function(l1, l2) {
    let temp = 0
    const result = {
        val: 0,
        next: null
    }
    let start = result
    while (l1 !== null || l2 !== null) {
        let res = 0
        if (l1 && l2) res = l1.val + l2.val + temp
        else if (l1 && !l2) res = l1.val + temp
        else if (l2 && !l1) res = l2.val + temp
        temp = Math.floor(res / 10)
        start.val = res % 10
        start.next = null
        if (l1) l1 = l1.next
        if (l2) l2 = l2.next
        if (l1 !== null || l2 !== null) {
            start.next = {}
            start = start.next
        }
    }
    if (temp !== 0) {
        start.next = {}
        start.next.val = temp
        start.next.next = null
    }
    return result
};

三、力扣3 无重复字符的最长子串(滑动窗口法)

/**
 * @param {string} s
 * @return {number}
 */
        var lengthOfLongestSubstring = function (s) {
            let str = '';
            if(!s){
              return 0;
            }
            for (let i = 0, end = 0; i < s.length; i++) {
                end = i;
                let contain = [];
                while((!(contain.includes(s[end + 1]))) && (!(s[i] === s[end + 1])) && end + 1 < s.length) {
                    end++;
                    contain.push(s[end]);
                }
                if (end > i && (str.length < (end - i + 1))) {
                    str = s.slice(i, end + 1);
                }
            }
            str = str ? str : s[0];
            let result=str.length;
     
            return result;
        };

四、力扣4 寻找正序数组的中位数(中位数基本查找算法)

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number}
 */
var findMedianSortedArrays = function(nums1, nums2) {
let cotain=[...nums1,...nums2];
let result;
let length=cotain.length;
cotain=cotain.sort((a,b)=>{return a-b;});
if((length%2)==1){
 result=cotain[(length-1)/2]*1.00000;
}else{
 result=(cotain[(length)/2-1]+cotain[length/2])/2.00000;
}
return result;
};

五、力扣5最长回文子串(中心扩散法)

/**
 * @param {string} s
 * @return {string}
 */
var longestPalindrome = function(s) {
let str='';
// let length;
for(let i=0 ,end=0,start=0;i<s.length;i++){
end=start=i;
while(end+1<s.length&&s[end+1]===s[i]){
end++;
}

while(start-1>=0&&end+1<s.length&&s[start-1]===s[end+1]){
start--;
end++;
}
if(end>start&&str.length<(end-start+1)){
str =s.slice(start,end+1);
}
}
str=str?str:s[0];
return str;
}

猜你喜欢

转载自blog.csdn.net/m0_72694993/article/details/127949127