如何解决反转二维数组的奇数索引行
我想用单循环而不使用条件语句来反转二维数组的奇数索引元素。
输入:
123
456
789
输出:
123
654
789
这是我的解决方案。但是如何在不使用 Math.floor() 和 Math.abs() 的情况下实现这一目标?
let arr = [
[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],];
let N = arr.length;
let M = arr[0].length;
for (let c = 0; c < N * M; c++) {
let i = Math.floor(c / M);
let j = c % M;
let k = (Math.abs(i-1) % 2);
let x = Math.abs(k * M - k - j);
console.log(arr[i][x]);
}
解决方法
const arr = [
[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],];
const n = arr.length;
const m = arr[0].length;
/*
* 1 - left to right
* 0 - right to left
*/
const direction = 1;
for (let i = 0; i < n * m; i++) {
const row = Math.floor(i / m);
const col =
((row + direction) % 2) * (i % m) +
((row + 1 + direction) % 2) * (m - 1 - (i % m));
console.log(arr[row][col]);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。