最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)的旋轉數(shù)組功能算法示例

 更新時間:2019年02月23日 11:18:47   作者:linfeng886  
這篇文章主要介紹了Python實現(xiàn)的旋轉數(shù)組功能算法,結合實例形式總結分析了數(shù)組旋轉算法的原理與實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了Python實現(xiàn)的旋轉數(shù)組功能算法。分享給大家供大家參考,具體如下:

一、題目

給定一個數(shù)組,將數(shù)組中的元素向右移動 k 個位置,其中 k 是非負數(shù)。

例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.盡可能想出更多的解決方案,至少有三種不同的方法可以解決這個問題。
2.要求使用空間復雜度為 O(1) 的原地算法。

二、解法

解法一

以倒數(shù)第 k 個值為分界線,把 nums 截成兩組再組合。因為 k 可能大于 nums 的長度(當這兩者相等的時候,就相當于 nums 沒有移動),所以我們取 k % len(nums),k 和 nums 的長度取余,就是最終我們需要移動的位置

代碼如下:

if nums:
  k = k % len(nums)
  nums[:]=nums[-k:]+nums[:-k]

時間:64ms,擊敗了98%

附:本機測試示例代碼:

# -*- coding:utf-8 -*-
nums= [1,2,3,4,5,6,7]
k =3
if nums:
  k = k % len(nums)
  nums[:]=nums[-k:]+nums[:-k]
print(nums)

運行結果:

[5, 6, 7, 1, 2, 3, 4]

解法二

先把 nums 最后一位移動到第一位,然后刪除最后一位,循環(huán)k次。k = k % len(nums) ,取余

代碼如下:

if nums:
  k = k % len(nums)
  while k > 0:
    k -= 1
    nums.insert(0, nums[-1])
    nums.pop()

時間:172ms,擊敗了16%

附:本機測試示例代碼:

# -*- coding:utf-8 -*-
nums= [1,2,3,4,5,6,7]
k =3
if nums:
  k = k % len(nums)
  while k > 0:
    k -= 1
    nums.insert(0, nums[-1])
    nums.pop()
print(nums)

運行結果:

[5, 6, 7, 1, 2, 3, 4]

解法三

先把 nums 復制到 old_nums ,然后 nums 中索引為 x 的元素移動 k 個位置后,當前索引為 x+k,其值為 old_nums[x]。,所以我們把 x+k 處理成 (x+k)%len(nums),取余操作,減少重復的次數(shù)。

代碼如下:

if nums:
  old_nums = nums[:]
  l = len(nums)
  for x in range(l):
    nums[(x+k) % l] = old_nums[x]

時間:64ms,擊敗了98%

附:本機測試示例代碼:

# -*- coding:utf-8 -*-
nums= [1,2,3,4,5,6,7]
k =3
if nums:
  old_nums = nums[:]
  l = len(nums)
  for x in range(l):
    nums[(x+k) % l] = old_nums[x]
print(nums)

運行結果:

[5, 6, 7, 1, 2, 3, 4]

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數(shù)組操作技巧總結》、《Python數(shù)據(jù)結構與算法教程》、《Python列表(list)操作技巧總結》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • python實現(xiàn)圖像最近鄰插值

    python實現(xiàn)圖像最近鄰插值

    這篇文章主要介紹了python實現(xiàn)圖像最近鄰插值,圖像插值技術即Nearest?Neighbour?Interpolate是圖像超分辨率領域的重要研究方法之一,其目的是根據(jù)已有的低分辨率圖像,獲得高分辨率圖像,下面來看看文章具體的敘述,需要的朋友可以參考一下
    2022-03-03
  • Python 實現(xiàn)一行輸入多個數(shù)字(用空格隔開)

    Python 實現(xiàn)一行輸入多個數(shù)字(用空格隔開)

    這篇文章主要介紹了Python 實現(xiàn)一行輸入多個數(shù)字,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Pytorch搭建YoloV5目標檢測平臺實現(xiàn)過程

    Pytorch搭建YoloV5目標檢測平臺實現(xiàn)過程

    這篇文章主要為大家介紹了Pytorch搭建YoloV5目標檢測平臺實現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • Python進階之自定義對象實現(xiàn)切片功能

    Python進階之自定義對象實現(xiàn)切片功能

    這篇文章主要介紹了Python進階之自定義對象實現(xiàn)切片功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Python 中由 yield 實現(xiàn)異步操作

    Python 中由 yield 實現(xiàn)異步操作

    這篇文章主要介紹了Python 中由 yield 實現(xiàn)異步操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • PyQt5事件處理之定時在控件上顯示信息的代碼

    PyQt5事件處理之定時在控件上顯示信息的代碼

    這篇文章主要介紹了PyQt5事件處理之定時在控件上顯示信息的代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 使用python如何將數(shù)據(jù)集劃分為訓練集、驗證集和測試集

    使用python如何將數(shù)據(jù)集劃分為訓練集、驗證集和測試集

    這篇文章主要介紹了使用python如何將數(shù)據(jù)集劃分為訓練集、驗證集和測試集問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python驗證碼圖片處理(二值化)

    python驗證碼圖片處理(二值化)

    這篇文章主要介紹了python驗證碼圖片處理(二值化),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Python中字典的setdefault()方法教程

    Python中字典的setdefault()方法教程

    在學習python字典操作方法時,感覺setdefault()方法,比字典的其它基本操作方法更難理解的同學比較多,所以想著總結以下,下面這篇文章主要給大家介紹了Python中字典的setdefault()方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • Python利用字典破解WIFI密碼的方法

    Python利用字典破解WIFI密碼的方法

    今天小編就為大家分享一篇關于Python利用字典破解WIFI密碼的方法,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02

最新評論

辽阳市| 新巴尔虎左旗| 汉中市| 江安县| 苗栗县| 昭平县| 安化县| 南阳市| 印江| 托克逊县| 屯门区| 安达市| 曲麻莱县| 怀柔区| 咸宁市| 龙州县| 关岭| 永靖县| 淮北市| 慈利县| 湖南省| 湖南省| 无为县| 宜良县| 乐平市| 洪泽县| 茂名市| 玛曲县| 荣昌县| 赣榆县| 枝江市| 吉木乃县| 陆川县| 车致| 丹东市| 哈尔滨市| 太康县| 修文县| 达尔| 建阳市| 留坝县|