给你一个数组,将数组中的元素向右轮转k
个位置,其中k
是非负数。
输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]
作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2skh7/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
static void Main(string[] args) { var f = 2 % 4; int[] arr = { 1,2,3,4 }; rote(arr, 2); } static void rote(int[] nums, int k) { int length = nums.Length; int[] temp = new int[length]; //把原数组值放到一个临时数组中, for (int i = 0; i < length; i++) { temp[i] = nums[i]; } //{ 1, 2, 3, 4 }; k=2 //然后在把临时数组的值重新放到原数组,并且往右移动k位 for (int i = 0; i < length; i++) { //nums[i+1]=nums[i]; //以使用(i + k) % length来计算重新赋值的元素下标(类似园形一圈) nums[(i + k) % length] = temp[i]; /* nums[2]=temp[0]; nums[3]=temp[1]; */ } }