题目描述及链接
解题思路
无论哪种思路,都先将k模等于numsSize,因为逆置numsSize等于没有逆置。
思路1.一次逆转1个元素,逆转k次
这种方法最容易想到,但是时间复杂度为O(k*n),在这一题中会超时。
完整代码
运行结果
思路2.创建临时数组
创建一个和原元素组一样大的临时数组tmp,
把后k个先放到临时数组前k个位置。
再把前numsSize-k个拷贝到临时数组后numsSize-k个位置。
最后再把tmp中的数据拷贝到原数组中。
这种方法是以空间换时间,时间复杂度为O(n)
完整代码
运行结果
思路3.局部逆置+整体逆置
先把前numsSize-k个和后k和分别逆置,最后整体逆置,图解如下
这种方法时间复杂度为O(n),空间复杂度为O(1),原地解决。
完整代码
运行结果
总结
思路3的技巧值得借鉴。