2021-02-03 [day34] Python百日打卡学习自【夸可编程】

'''
第34天:移动数组

每日一题 夸克编程 今天
题目

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数,要求使用空间复杂度为 O(1) 的原地算法
例子

move_ele([1,2,3,4,5,6,7],3) -> [5,6,7,1,2,3,4]
假设

输入参数均合法
tips

将输入数组翻转两次
代码:
'''

# 不是原地移动
def move_ele2(lst, k):
    print(id(lst))
    lst = lst[-k:] + lst[:-k]
    # lst[k:].reverse()
    # print(lst)
    # lst[:k].reverse()
    print(id(lst))
    return lst


def move_ele(lst, k):
    if 0 < k:
        k %= len(lst)
        while k:
            lst.insert(0, lst.pop(-1))
            k -= 1
        # pass
    return lst


print(move_ele2([1,2,3,4,0,5,6,7],3))# -> [5,6,7,1,2,3,4]

你可能感兴趣的:(2021-02-03 [day34] Python百日打卡学习自【夸可编程】)