leetcode Rotate Array 旋转数组
来源:互联网 发布:api接口程序源码 编辑:程序博客网 时间:2024/06/13 13:42
Rotate an array of n elements to the right by k steps.
还有就是简单的step by step即向右移动k位分成k次向右移动一位:
For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].即给定移动数k,向右循环移动k位:
最简单想到的就是借助一个临时数组存储循环移动k位后的数:
void rotate(int* nums, int numsSize, int k) { int *p=(int *)malloc(sizeof(int)*numsSize); memset(p,0,sizeof(p)); for(int i=0;i<numsSize;i++) p[(i%numsSize+k)%numsSize]=nums[i]; for(int i=0;i<numsSize;i++) nums[i]=p[i];}
还有就是简单的step by step即向右移动k位分成k次向右移动一位:
void rotate(int* nums, int numsSize, int k) { int temp; for(int i=0;i<k;i++){ temp=nums[numsSize-1]; for(int j=numsSize-1;j>0;j--) nums[j]=nums[j-1]; nums[0]=temp;} for(int j=0;j<=numsSize-1;j++) cout<<nums[j]<<" ";}不过很遗憾,这种做法太复杂,结果显示: Time Limit Exceeded
还有一种做法是:先将数组全部反序,再根据移动位数k先将前k位又反序,再将最后k-numsSize数字反序即可:
void reverse(int *a,int *off){ int *p=(int *)malloc(sizeof(int)*(off-a)); for(int i=0;i<(off-a);i++) p[i]=*(off-i-1); for(int i=0;i<(off-a);i++) a[i]=p[i];}void rotate(int* nums, int numsSize, int k) {k=k%numsSize; reverse(nums,nums+numsSize); reverse(nums,nums+k); reverse(nums+k,nums+numsSize);}
0 0
- leetcode:Rotate Array旋转数组
- 【LeetCode】Rotate Array 旋转数组
- Rotate Array 数组旋转 leetcode
- leetcode Rotate Array 旋转数组
- LeetCode Rotate Array(数组的旋转)
- LeetCode 189 Rotate Array(旋转数组)
- LeetCode 189 Rotate Array(旋转数组)
- LeetCode 189. Rotate Array(旋转数组)
- leetcode 189. Rotate Array-旋转数组
- leetcode 189. Rotate Array旋转数组
- Rotate Array数组旋转
- 字符串,数组旋转问题-leetcode 189 Rotate Array
- Rotate Array 数组的旋转
- [C++]Rotate Array 旋转数组
- Rotate Array 部分旋转数组
- 189. Rotate Array 旋转数组
- 189. Rotate Array 旋转数组
- 189. Rotate Array (旋转数组)
- POJ 3268 Silver Cow Party (存逆图+两次dijkstra求解)
- 数据结构基础 排序算法(一) 概念篇
- hdu5135 Little Zu Chongzhi's Triangles(DP)
- 经典数据结构和算法回顾
- java中的setActionCommand()方法
- leetcode Rotate Array 旋转数组
- 《演说之禅》笔记
- Asp.net-知识总结(5)
- 关于asp错误'C:\inetpub\wwwroot\bg\#databases#\seablog.mdb'不是一个有效的路径。
- 关于block
- HDFS 的Trash回收站功能的配置、使用
- linux_c开发(5-4)进程间通讯_共享内存通讯
- JSP+servlet生成验证码并验证
- JAVA基础一大堆0802拷贝文件流+网络连接