彭博面试原题:旋转数组
LintCode 1334
旋转数组
题目描述 给定一个数组,将数组向右移动k步,其中k为非负数。
题目描述
扫码免费做题 ↓↓↓
样例 1
输入: [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
输入: [-1,-100,3,99], k = 2
输出: [3,99,-1,-100]
解释:
向右旋转1步: [99,-1,-100,3]
向右旋转2步: [3,99,-1,-100]
解题思路
Example:nums = 1,2,3,4,5,6,7 k = 3 Step1:划分成1,2,3,4, 5,6,7 Step2:分别reverse,4,3,2,1, 7,6,5 Step3:合并reverse,5,6,7,1,2,3,4
源代码
publicclassSolution{
/**
* @param nums: an array
* @param k: an integer
* @return: rotate the array to the right by k steps
*/
publicint[] rotate(int[] nums, int k) {
// Write your code here
int n = nums.length;
k %= n;
reverse(nums, 0, n - k - 1);
reverse(nums, n - k, nums.length - 1);
reverse(nums, 0, nums.length - 1);
return nums;
}
publicvoidreverse(int[] n, int i, int j){
for (int p = i, q = j; p < q; p++, q--) {
int temp = n[p];
n[p] = n[q];
n[q] = temp;
}
}
}
查看完整代码,向左滑动
点击【阅读原文】,查看领扣原题。
阅读原文 关键词
数组
nums.length
代码
题目
思路
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。