void rotate_inter(int *a, int n, int k) {
int t[k];
for (int i = 0; i < k; i++) { t[k - 1 - i] = a[n - 1 - i]; }
for (int i = n - 1; i >= k; i--) { a[i] = a[i - k]; }
for (int i = 0; i < k; i++) { a[k - 1 - i] = t[k - 1 - i]; }
}
void rotate(int* a, int n, int k) {
if (k == 0) return;
if (k < n) {
rotate_inter(a, n, k);
} else if (k > n) {
rotate(a, n, k % n);
}
}
LeetCode #189 Rotate Array
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 原题 给出一个n个元素的数组,向右位移k位。比如 n = 7 and k = 3, 已知数组为[1,2,3,4,5...
- Rotate an array of n elements to the right by k steps.For...
- 题目描述: 给定一个数组,将数组向右旋转k步,其中k为非负数 Example1 Explanation: Exam...
- Given an array, rotate the array to the right by k steps,...
- 题目 给定一个数组和一个数字n, 进行n次操作, 每次都将数组的最后一个数字放到最前面. 思路1 将后n个数字提到...