• Leetcode 189.旋转数组 By Python


    给定一个数组,将数组中的元素向右移动 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) 的原地算法。

    思路

    python有切片这个问题就很简单了,本来还要考虑k和nums的长度的大小问题,现在只要用nums长度减去k就好了

    比如:

    nums = [1,2]
    k = 3
    #输出应该是[2,1]
    #切片就是:
    nums[:] = nums[-1:] + nums[:-1]
    #右边两个分别对应2,1
    
    #具体查看下面代码
    

    代码

    class Solution(object):
        def rotate(self, nums, k):
            """
            :type nums: List[int]
            :type k: int
            :rtype: void Do not return anything, modify nums in-place instead.
            """
            length = len(nums)
            nums[:] = nums[length-k:] + nums[:length-k]
    
  • 相关阅读:
    清除浮动的方法
    手机端横竖屏切换,怎么做才能安卓浏览器及时改变字体大小
    css z-index之object flash修正
    解决Flash挡住层用z-index无效的问题
    css垂直居中
    自定义selsct
    基础导航条
    按钮下拉菜单
    pandas的使用
    数据分析、人工智能开篇
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/9644010.html
Copyright © 2020-2023  润新知