赞
踩
题目:给你一个数组,将数组中的元素向右轮转 k
个位置,其中 k
是非负数。
示例 1:
输入: 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]
示例 2:
输入:nums = [-1,-100,3,99], k = 2
输出:[3,99,-1,-100]
解释:
向右轮转 1 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100]
提示:
1 <= nums.length <= 105
-231 <= nums[i] <= 231 - 1
0 <= k <= 105
代码
- #include<stdio.h>
-
- void rotate(int* nums, int numsSize, int k){
- int i;
- int b[numsSize];
- for(i=0;i<numsSize;i++){
- b[i]=nums[i];
- }
- for(i=0;i<k;i++){ //搞定后K位前移问题
- nums[i]=b[numsSize-k+i];
- }
-
- for(i=k;i<numsSize;i++){ //搞定前面后移问题
- nums[i]=b[i-k];
- }
-
-
- }
-
- int main()
- {
- int a[7]={1,2,3,4,5,6,7};
- int *prices=a;
-
- int k=3;
-
- int pricesSize=7;
- rotate(prices,pricesSize,k);
- for(int i=0;i<7;i++){
- printf("%d",a[i]);
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。