文章目录
题目:
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数
暴力求解:
当k<数组长度L,旋转k次,当k>L时,就相当于只进行了k%L次移动,为了简化步骤,要在最开始就对k进行处理。接着声明一个变量来存储数组最后一个数,然后依次把数组后移,最后把变量的值赋值给数组的第一个元素。重复上面步骤k次。当k>数组长度l时,就相当于只进行了k%l次移动。这种暴力解法思路清晰,但是时间复杂度大。
三次反转实现:
首先还是按照暴力求解的方法处理k,这里假设最后得到的k=3
原始数组:
-
第一次反转:
将整个数组反转
-
第二次反转:
将前k个数组反转
-
第三次反转:
-
将k到末尾的数组反转
代码实现:
class Solution:
def rotate(self<