javascript - 有没有其他方法可以在数组对中找到总和为 k 的数字?
问题描述
我有一个整数数组和一个数字 k。是否需要判断数组中是否有两个数的和为k?
function findPairs(nums, k) {
var s = [];
var length = nums.length;
for (var i = 0; i < length; i++) {
if (s[nums[i]] === k - nums[i]) {
console.log(nums[i], k - nums[i])
return true;
} else {
s[k - nums[i]] = nums[i];
}
}
return false;
}
var nums = [10, 15, 3, 7]
var k = 17
console.log(findPairs(nums, k))
为什么我的代码不起作用?
解决方案
我的猜测是您有语法错误或忘记实际声明一个函数,因为您问题的当前版本中的代码似乎按预期工作。
顺便说一句,我建议使用对象或 aSet
而不是数组来存储另一对,因为对于较大的 值k
,您的s
数组可能会因此在某些 JavaScript 引擎上消耗大量内存。
function findPairs(nums, k) {
var s = {};
var length = nums.length;
for (var i = 0; i < length; i++) {
if (s[nums[i]] === k - nums[i]) {
console.log(nums[i], k - nums[i]);
return true;
}
s[k - nums[i]] = nums[i];
console.log(s); // see the lookup table after each iteration
}
return false;
}
var nums = [10, 15, 3, 7];
var k = 17;
console.log(findPairs(nums, k));
推荐阅读
- r - 不带前导零的日期格式 - R
- mysql - 如何一次性将 40 亿条记录从 MySQL 加载到 SQL Server
- http - 如何检查cookie是否过期
- javascript - Creating a reusable JS file - Import - export not working
- javascript - 如何使 Chai 自定义断言失败?
- mysql - MySQL查询总时间,其中值等于“X”
- android - Android 应用操作不适用于语音命令
- .net - 获取物理处理器数量.NET Core 2.2
- .htaccess - 文件 .htaccess 和 css
- node.js - mongo DB中的多级聚合查找