1.两数之和(简单)
var twoSum = function(nums, target) {
const map = new Map();
for(let i = 0;i < nums.length;i++){
const ret = target - nums[i];
if(map.has(ret)){//判断map中是否有结果
return [map.get(ret),i];//如果有,返回结果
}
else{
map.set(nums[i],i);//如果没有,将数据存入map中
}
}
return [];
};
2.两数相加(中等)
思路
var addTwoNumbers = function(l1, l2) {
let heart = new ListNode();//创建头结点
let heav = heart;//遍历链表
let num = 0;// 记录进位数据
while(l1 !== null||l2 !== null){
let sum = 0;//
if(l1 !=null){
sum += l1.val;
l1 = l1.next;
}
if(l2 !=null){
sum += l2.val;
l2 = l2.next;
}
sum += num;// 进位
heav.next = new ListNode(sum%10);//创建新结点
num = Math.floor(sum/10);// 记录进位数据
heav = heav.next;
}
if(num > 0){
heav.next = new ListNode(num);
}
return heart.next;
};
20.有效的括号(简单)
思路
var isValid = function (s) {
//pop()方法移除数组末尾的元素并将该元素返回给调用者。如果数组为空,则pop()方法返回undefined。并通过删除来检索元素。
const map = new Map();
map.set("(", ")");
map.set("{", "}");
map.set("[", "]");
const stack = [];
for (let i = 0; i < s.length; i++) {
if (map.has(s[i])) {
stack.push(map.get(s[i]));
}
else {
if (stack.pop() !== s[i]) {
return false;
}
}
}
if (stack.length !== 0) {
return false;
}
return true;
};