我们可以发现输出前三位数是输入的后三位,输出后四位数是输入的前四位。而移动步数 k=3,剩余长度=数组长度 - 移动步数 = 7-3=4 ,刚好对应我们发现的规律。...但是在C\C++、Java里是肯定会改变空间复杂度,不满足要求。...这时候可以换个思路,如下所示不断反转特定长度数组:
输入: [1,2,3,4,5,6,7]
反转整个数组: [7,6,5,4,3,2,1]
反转前k位:[5,6,7]
反转剩余的: [1,2,3,4]...输出: [5,6,7,1,2,3,4]
或者改变一下顺序先反转前 剩余位数和后k位:
输入: [1,2,3,4,5,6,7]
反转前剩余长度的: [4,3,2,1]
反转后k位:[7,6,5]
此时数组...:[4,3,2,1,7,6,5]
反转整个数组: [5,6,7,1,2,3,4]
输出: [5,6,7,1,2,3,4]
Java(反转数组):
class Solution {
public