LeetCode初级算法--数组02:旋转数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了LeetCode初级算法--数组02:旋转数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1607字,纯文字阅读大概需要3分钟。
内容图文
![LeetCode初级算法--数组02:旋转数组](/upload/InfoBanner/zyjiaocheng/689/524a4c0eb5474262acb89c613a542e84.jpg)
LeetCode初级算法--数组02:旋转数组
搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法、机器学习干货
csdn:https://blog.csdn.net/baidu_31657889/
csdn:https://blog.csdn.net/abcgkj/
github:https://github.com/aimi-cn/AILearners
一、引子
这是由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]
说明:
- 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
- 要求使用空间复杂度为 O(1) 的 原地 算法。
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 发布!
内容总结
以上是互联网集市为您收集整理的LeetCode初级算法--数组02:旋转数组全部内容,希望文章能够帮你解决LeetCode初级算法--数组02:旋转数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。