![](/img/trans.png)
[英]How to make sure that the element is not visible and proceed with the next conditions in protractor
[英]Snail Sort - Stuck in the middle, not sure how to proceed
我被困在這個地方,無法繼續進行下去。 問題是這樣的。 給定一個nxn
數組,將從最外面的元素排列的數組元素返回到中間元素,順時針移動。
array = [[1,2,3],
[4,5,6],
[7,8,9]]
snail(array) #=> [1,2,3,6,9,8,7,4,5]
為了更好地理解,請連續跟隨下一個數組的數字:
array = [[1,2,3],
[8,9,4],
[7,6,5]]
snail(array) #=> [1,2,3,4,5,6,7,8,9]
此圖像將更清楚地說明事物:
到目前為止,我嘗試過的嘗試是:
arr = [[1, 2, 3], [3, 4]];
var n = arr[0].length;
var i = 0, j = 0;
var fa = [];
var count = 0;
var direction = "right";
console.log(n);
while (fa.length < n * n) {
fa.push(`${i}, ${j}`);
if (j == n - 1 && i < n - 1) {
direction = "down";
} else if (j == 0 && i != 0) {
direction = "up";
} else if (i == n - 1) {
direction = "left";
} else if (i == 0) {
direction = "right";
}
switch (direction) {
case "right":
j++;
break;
case "left":
j--;
break;
case "up":
i--;
break;
case "down":
i++;
break;
}
if (count++ == 15)
break;
}
console.log(fa);
我不確定如何進行。 我需要知道兩件事。
這是我針對此問題所做的工作。 您可以看到我們如何跟蹤最小和最大col和行值。 我不確定您在代碼中的工作方式如何,但希望能有所幫助。
var m = 4;
var n = 4;
var board = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
];
var result = [];
var dir = 'right';
var imin = 0;
var imax = m - 1;
var jmin = 0;
var jmax = n - 1
var i = imin;
var j = jmin;
var done = false;
while (!done)
{
switch (dir)
{
case 'right':
i = imin;
j = jmin;
for (j; j <= jmax; j++)
result.push(board[i][j]);
console.log(result);
dir = 'down';
imin++;
break;
case 'left':
i = imax;
j = jmax;
for (j; j >= jmin; j--)
result.push(board[i][j]);
console.log(result);
dir = 'up';
imax--;
break;
case 'down':
i = imin;
j = jmax;
for (i; i <= imax; i++)
result.push(board[i][j]);
console.log(result);
dir = 'left';
jmax--;
break;
case 'up':
i = imax;
j = jmin;
for (i; i >= imin; i--)
result.push(board[i][j]);
console.log(result);
dir = 'right';
jmin++;
break;
}
if (imin > imax || jmin > jmax)
done = true;
}
console.log(result);
很抱歉這么晚。
我對這個問題的解決方案是
arr = [ [1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16], ]; function rotate(arr) { copy = []; rows = arr.length; for(i = 0; i < rows; i++) { cols = arr[i].length; for(j = 0; j < cols; j++) { if(copy[cols - 1 - j] === undefined) copy[cols - 1 - j] = []; copy[cols - 1 - j][i] = arr[i][j]; } } return copy; } res = []; do { res = res.concat(arr.shift()); arr = rotate(arr); } while(arr.length); console.log(res);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.