1.leetCode第一题
需求:
https://leetcode-cn.com/probl...
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
let nums = [2, 7, 11, 15];
function print(nums, target) {
//创建映射表
let hash = {};
for (let i = 0; i < nums.length; i++) {
//将每次循环的数据存储起来 例如索引为0={2:0}
hash[nums[i]] = i;
//使用减法来寻找映射表中是否存在对应的值 这里是9-7成立 = 2映射表中存在键为2的属性而它对应的值正是索引
if (hash[target - nums[i]] != undefined) {
//将寻找到的2和当前被减的索引return出去就满足了本题的结果
return [hash[target - nums[i]], i];
}
}
}
2.leetCode第二题
需求:
https://leetcode-cn.com/probl...
给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
/*
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
*/
//实现一个创建节点的类
function ListNode(val) {
this.val = val;
this.next = null;
}
var addTwoNumbers = function (l1, l2) {
// 链表的头
var node = new ListNode("head");
//这里的cur类似一个针 计算完l1.val+l2.val之后 向下指
var cur = node;
// 每次记录是否超过了10 如果超过需要进位
var n = 0;
// 每次重新赋值l1和l2的和
var sum = 0;
while (l1 || l2) {
var n1 = l1 ? l1.val : 0;
var n2 = l2? l2.val : 0;
//这里的n是代表进位过来的数值 如果小于10 n就为0
sum = n1 + n2 + n;
//将n置为小数 后面会用到
n = parseInt(sum / 10);
//%10是为了如果大于等于10只保留个位
cur.next = new ListNode(sum % 10); //设置当前结点的下一个结点
cur = cur.next; //将当前结点前进到下一个结点
if (l1) {
l1 = l1.next;
}
if (l2) {
l2 = l2.next;
}
}
//为了链表的最后一位相加也大于等于10的处理,比如[9,9,9]+[9,9,9],那么经过下面的处理就不会丢失最后一位
//这里的n经过上面的/10的处理 如果大于0那就是十位数
//那么上面的sum值就会进行这一次的累加
if (n > 0) {
cur.next = new ListNode(n);
}
return node.next;
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。