原标题:LeetCode初级算法--数组02:旋转数组
原文来自:CSDN 原文链接:https://www.cnblogs.com/aimi-cn/p/11693643.html
一、引子
这是由LeetCode官方推出的的经典面试题目清单~
这个模块对应的是探索的初级算法~旨在帮助入门算法。我们第一遍刷的是leetcoda推荐的题目。
查看完整的剑指Offer算法题解析请点击github链接:
github地址
二、题目
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
示例 1:
输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:
向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]
示例 2:
输入: [-1,-100,3,99] 和 k = 2输出: [3,99,-1,-100]解释:
向右旋转 1 步: [99,-1,-100,3]向右旋转 2 步: [3,99,-1,-100]
说明:
1、思路
我们可以看出旋转之后的结果是以最后个K值为界限前后进行调换。所以我们使用数组的切片操作。
2、编程实现
python
class Solution(object):
def rotate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: None Do not return anything, modify nums in-place instead.
"""
#切片操作1
# while k > len(nums):
# k -=len(nums)
# changed = nums[-k:] + nums[:-k]
# for i in range(len(changed)):
# nums[i] = changed[i]
#切片操作2
i = k % len(nums) #保证循环次数在0-len(nums)之间
nums[:] = nums[-i:]+nums[:-i] #切割成两块重新组合
AIMI-CN AI学习交流群【1015286623】 获取更多AI资料
分享技术,乐享生活:我们的公众号计算机视觉这件小事每周推送“AI”系列资讯类文章,欢迎您的关注!
本文由博客一文多发平台 OpenWrite 发布!
免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。
合作及投稿邮箱:E-mail:editor@tusaishared.com