大家有问题欢迎和我留言沟通哦,共同进步~
第1题
用三种方式解答(其实是2种思路啦,第2、3种是同一个思路,只不过3看起来更优雅些)
暴力解法:
var twoSum = function(nums, target) {
for(var j = i+1; j < nums.length;j++){
if(nums[i] + nums[j] === target){
return [i, j]
}
}
};
var arr = [2,7,11,15];
twoSum(arr, 9)
Map实现:
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let myMap = new Map()
for(var i = 0; i < nums.length; i++){
let wantValue = target - nums[i]
if(myMap.has(wantValue) ){
return [myMap.get(wantValue),i];
}
myMap.set(nums[i],i);
}
};
var arr = [2,7,11,15];
twoSum(arr, 9)
优雅的Map实现:
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
const map = new Map()
for(var i = 0; i < nums.length; i++){
let complement = target - nums[i]
if(map.has(complement) ){
return [map.get(complement),i];
}else{
map.set(nums[i],i);
}
}
};
var arr = [2,7,11,15];
twoSum(arr, 9)
第2题
var addTwoNumbers = function(l1, l2) {
let dummy = new ListNode();
let curr = dummy;
let carry = 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 += carry;
curr.next = new ListNode(sum % 10);
carry = Math.floor(sum/ 10);
curr = curr.next
}
if(carry > 0){
curr.next = new ListNode(carry);
}
return dummy.next
};