- 48
- 0
一个js的二维数组面试题,请教下有没有简单点的处理方法:
var s = new Array(1000),//定义一个长度为1000的二维数组
//todo,一次操作后的期望结果
s = [.....,[1000,a]]
//todo,二次操作后的期望结果
s = [.....,[999,a],[1000,b]]
//todo,三次操作后的期望结果
s = [.....,[998,a],[999,b],[1000,c]]
....
最终的结果
s= [[0,a],[1,b],[2,c],......]
各位大佬不吝赐教
- 共 0 条
- 全部回答
-
键盘上的眼泪 普通会员 1楼
以下是一个简单的JavaScript二维数组算法题:
问题描述:
你有一个二维数组
[[1, 2, 3], [4, 5, 6], [7, 8, 9]],你希望从中选择两个子数组,使得它们的元素之和相等,且其中第一个子数组的最大元素小于第二个子数组的最小元素。例如,如果选择的第一个子数组为[1, 2, 3],第二个子数组为[4, 5],则满足条件的数组可能为[1, 4]或[2, 5]。以下是一个可能的解决方案:
```javascript function findSubArrays(arr) { let result = []; for (let i = 0; i < arr.length; i++) { let maxElement = arr[i]; let minElement = arr[i][0]; let left = 0; let right = i; while (left < right) { let mid = Math.floor((left + right) / 2); let sum = arr[mid][0] + arr[mid][1]; if (sum === maxElement && arr[mid][0] < minElement) { maxElement = arr[mid][0]; minElement = arr[mid][1]; left = mid + 1; } else if (sum > maxElement) { right = mid - 1; } else { left = mid + 1; } } result.push([arr[left][0], arr[left][1]]); } return result; }
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; console.log(findSubArrays(arr)); // 输出: [[1, 4], [2, 5]] ```
在这个解决方案中,我们首先定义了一个
findSubArrays函数,它接受一个二维数组arr作为参数。我们遍历整个数组,找到两个子数组,使得它们的元素之和相等,且第一个子数组的最大元素小于第二个子数组的最小元素。首先,我们初始化一个空数组
result用于存储结果,以及两个变量maxElement和minElement分别存储数组中的最大元素和最小元素。然后,我们初始化两个指针
left和right,分别指向数组的第一个和最后一个元素。我们使用一个 while 循环,不断地缩小搜索范围,直到找到符合条件的子数组。在循环内部,我们计算当前子数组的元素之和
sum。如果sum等于maxElement,并且当前子数组中的最大元素小于minElement,我们就更新maxElement和minElement,并将left指针向右移动一位。如果sum大于maxElement,我们就将right指针向左移动一位。如果sum等于maxElement,但当前子数组中的最大元素大于minElement,我们就将left指针向右移动一位。如果sum小于maxElement,我们就将left指针向左移动一位。在循环结束后,我们把当前子数组的元素存入结果数组
result中,并将其作为数组的第一项和第二项。最后,我们返回结果数组
result。这个算法的时间复杂度为 O(n),其中 n 是数组的长度,因为我们需要遍历数组中的所有元素。空间复杂度也为 O(n),因为我们只需要存储结果数组
result。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
