《leetCode》:Rotate Array
2016-03-01 22:27
399 查看
题目
Rotate an array of n elements to the right by k steps. 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]. Note: Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
思路一
此题在《剑指Offer》上面遇到过,而且解题思路也还记得,如下:将数组中前面(n-k)个元素逆序,以及将数组后面的k个元素 逆序,最后将整体逆序即可。
/* 思路:将数组中前面(n-k)个元素逆序,以及将数组后面的k个元素 逆序 最后将整体逆序即可。 */ void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp; } //函数功能:将数组nums进行逆序 void reverse(int *nums,int numsSize){ if(nums==NULL||numsSize<1){ return ; } int begin=0; int end=numsSize-1; while(begin<end){ swap(&nums[begin],&nums[end]); begin++; end--; } } void rotate(int* nums, int numsSize, int k) { if(nums==NULL||numsSize<1||k<0){ return; } k=k%numsSize; reverse(nums,numsSize-k); reverse(nums+numsSize-k,k); reverse(nums,numsSize); }
相关文章推荐
- Search a 2D Matrix II
- 快速掌握Lua 5.3 —— IO库 (1)
- Spring学习笔记2016-3-1
- 第一次试验-1
- svn学习笔记2016-3-1
- Java 集合类详解
- 杨鑫的C++上机报告
- 一个有意思的js小问题
- 4Sum
- bzoj 1041: [HAOI2008]圆上的整点
- LeetCode - 34. Search for a Range
- 爬虫学习:一个ip地址下载器
- SSH整合笔记2016-3-1
- 黄聪:怎么清理win7、win8更新垃圾(winsxs目录清理)
- JDBC中Statement和 PreparedStatement有什么不同?
- WinForm中自定义Brush(笔刷)颜色
- 学习Linux决心书
- overcommit_memory
- Vijos 1217-P1217乒乓球
- Ubuntu下Python音频播放处理库--安装总结