一、力扣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;
}