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]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容