【算法题】整形数组向右移动位置的题目

有个算法题是这样,有一个有M个元素的整形数组,数组元素一个一个的往右边平移, 往右平移N次, 返回平移后的数组

比如 数组A

[1,2,3,4,5] M =5, 数组元素往右平移一位(一次) N= 1  => 平移后的数组是 [5,1,2,3,4]

                                                                 平移2次,N =2 => 平移2次后的数组是 [4,5,1,2,3]

                                                                  平移3次, N =3 => 平移3次后的数组是 [3,4,5,1,2]

[1,2,3,4,5,6,7] M =7, 数组元素往右平移一位(一次) N= 1  => 平移后的数组是 [7,1,2,3,4,5,6]

                                                                 平移2次,N =2 => 平移2次后的数组是 [6,7,1,2,3,4,5]

                                                                  平移3次, N =3 => 平移3次后的数组是 [5,6,7,1,2,3,4]

这个是有规律的,对数组A进行循环,我们假设平移后的数组为B

if (N > M) N = N % M
for
(int i =0; i < A.Length; i++) { if(i - N < 0) { B[i] = A[i - N + M] }
else
{
B[i] = A[i - N]
}
}

这样下来,返回的B数组就是平移N位后的数组

 

posted on 2023-02-15 15:11  新西兰程序员  阅读(44)  评论(0编辑  收藏  举报