渣渣一个,只能从最基础开始做,但是会记录每个题的思路和过程,从之前能找到的到以后,慢慢记录
题目1:
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
nums = [2, 7, 11, 15], target = 9 要求得到 [0, 1]
我的想法是类似将第一个数字固定,然后去依次比较之后的数字,把符合要求的添加到一个空数组当中,最后返回
1 function getSum(nums, target) { 2 var newArr = []; 3 for (var i = 0; i < nums.length; i++) { 4 for (var j = i + 1; j < nums.length; j++) { 5 console.log(i); if (target === nums[i] + nums[j]) { 7 newArr.push(i, j); 8 } 9 } 10 } 11 return newArr; 12 }
这个能够满足题意,不过没有考虑性能方面的问题, 我比较在意的是在数组比较长的情况下,只显示索引会显得不够明显,所以我稍微改了一下,用二维数组的方式直观的显示对应的元素本身
1 function getSum(nums, target) { 2 var newArr = []; 3 for (var i = 0; i < nums.length; i++) { 4 for (var j = i + 1; j < nums.length; j++) { 5 if (target === nums[i] + nums[j]) { 6 newArr.push([nums[i], nums[j]]); 7 } 8 } 9 } 10 return newArr; 11 }