LeetCode初級算法--數組02:旋轉數組

LeetCode初級算法--數組02:旋轉數組

搜索微信公衆號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習乾貨python

csdn:https://blog.csdn.net/baidu_31657889/git

csdn:https://blog.csdn.net/abcgkj/github

github:https://github.com/aimi-cn/AILearners面試

1、引子

這是由LeetCode官方推出的的經典面試題目清單~
這個模塊對應的是探索的初級算法~旨在幫助入門算法。咱們第一遍刷的是leetcoda推薦的題目。
查看完整的劍指Offer算法題解析請點擊github連接:
github地址算法

2、題目

給定一個數組,將數組中的元素向右移動 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) 的 原地 算法。

一、思路

咱們能夠看出旋轉以後的結果是以最後個K值爲界限先後進行調換。因此咱們使用數組的切片操做。學習

二、編程實現

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 發佈!

相關文章
相關標籤/搜索