javascript - 如何对数组进行j操作?
问题描述
j
给定一个整数数组,在数组上执行操作的最有效方法j
是=>
什么<=
array.length
?
我尝试过这样的事情......
function performJ(arr, j) {
arr.sort((a, b) => b - a);
let i = 0;
while (j !== 0) {
if (i < arr.length) {
arr[i] = Math.ceil(arr[i] / 2)
} else {
// when i reaches arr.length, reset it to continue operations j
i = 0;
arr[i] = Math.ceil(arr[i] / 2)
}
// increment i, step through arr
++i;
// decrement j as we perform operations on arr
--j;
}
return arr.reduce((a, b) => a + b);
}
这适用于很多情况,但由于某种原因,它似乎是大量输入,arr
并j
导致while
循环中的算术运算无法运行。
谢谢!
编辑:为清楚起见,编辑了问题。我以前有一个可行的解决方案,但花了太长时间。此解决方案的算术已关闭,但运行速度更快。
解决方案
使用模迭代[i % arr.length]
从 0 到的索引j
:
function performJ(arr, j) {
arr.someMethod(); // ?
for (let i = 0; i < j; i++) {
arr[i % arr.length] = /* operation */
}
return arr.someMethod(); // ?
}
推荐阅读
- javascript - 如何测试字符串中的匹配转义字符?
- python - 用 Fernet 解密 [Python]
- java - 从经典的 java.util.Date 类型的属性“迁移”到等效的 java.time 类型
- python - Python:- 使用 Copy 获取类中静态变量的值
- c# - 将单个 Excel 工作表数据合并到具有多个工作表的单个 Excel
- python - 如何始终并行运行 n 个进程,而无需等待前 n 个进程完成?
- mysql - MySQL搜索并删除字段中的一些文本
- python-3.x - 如何验证 .txt 文件中的用户输入(用户名和密码)?Python
- android - 带有BottomSheet的windowSoftInputMode不起作用
- asp.net-core - 在 ASP.NET Core 上 (ModelState.IsValid == false) 时如何持久化 IFormFile 上传