欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

實(shí)現(xiàn)Python3數(shù)組旋轉(zhuǎn)的3種算法實(shí)例

 更新時(shí)間:2020年09月16日 07:48:58   作者:silencement  
在本篇文章里小編給大家整理的是一篇關(guān)于實(shí)現(xiàn)Python3數(shù)組旋轉(zhuǎn)的3種算法實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。

Python3實(shí)現(xiàn)旋轉(zhuǎn)數(shù)組的3種算法

下面是Python3實(shí)現(xiàn)的旋轉(zhuǎn)數(shù)組的3種算法。

一、題目

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

例如:

輸入: [1,2,3,4,5,6,7] 和 k = 3

輸出: [5,6,7,1,2,3,4]

解釋:

向右旋轉(zhuǎn) 1 步: [7,1,2,3,4,5,6]

向右旋轉(zhuǎn) 2 步: [6,7,1,2,3,4,5]

向右旋轉(zhuǎn) 3 步: [5,6,7,1,2,3,4]

說明:

1.盡可能想出更多的解決方案,至少有三種不同的方法可以解決這個(gè)問題。

2.要求使用空間復(fù)雜度為 O(1) 的原地算法。

二、解題算法

解法一

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

代碼如下:

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

時(shí)間:64ms

假設(shè):

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

k =3

運(yùn)行結(jié)果:

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

解法二

先把 nums 最后一位移動(dòng)到第一位,然后刪除最后一位,循環(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()

時(shí)間:172ms

假設(shè):

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

k =3

運(yùn)行結(jié)果:

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

解法三

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

代碼如下:

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

時(shí)間:64ms

假設(shè):

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

k =3

運(yùn)行結(jié)果:

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

到此這篇關(guān)于實(shí)現(xiàn)Python3數(shù)組旋轉(zhuǎn)的3種算法實(shí)例的文章就介紹到這了,更多相關(guān)3種算法實(shí)現(xiàn)Python3數(shù)組的旋轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于python下cv.waitKey無響應(yīng)的原因及解決方法

    關(guān)于python下cv.waitKey無響應(yīng)的原因及解決方法

    今天小編就為大家分享一篇關(guān)于python下cv.waitKey無響應(yīng)的原因及解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python進(jìn)階之遞歸函數(shù)的用法及其示例

    Python進(jìn)階之遞歸函數(shù)的用法及其示例

    本篇文章主要介紹了Python進(jìn)階之遞歸函數(shù)的用法及其示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Django認(rèn)證系統(tǒng)實(shí)現(xiàn)的web頁面實(shí)現(xiàn)代碼

    Django認(rèn)證系統(tǒng)實(shí)現(xiàn)的web頁面實(shí)現(xiàn)代碼

    這篇文章主要介紹了Django認(rèn)證系統(tǒng)實(shí)現(xiàn)的web頁面實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python手拉手教你爬取貝殼房源數(shù)據(jù)的實(shí)戰(zhàn)教程

    Python手拉手教你爬取貝殼房源數(shù)據(jù)的實(shí)戰(zhàn)教程

    隨著人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容,了解python爬蟲,本文給大家分享Python爬取貝殼房源數(shù)據(jù)的實(shí)戰(zhàn)教程,感興趣的朋友一起學(xué)習(xí)吧
    2021-05-05
  • Python打工人必備之windows倒計(jì)時(shí)鎖屏功能的實(shí)現(xiàn)

    Python打工人必備之windows倒計(jì)時(shí)鎖屏功能的實(shí)現(xiàn)

    每個(gè)人的電腦里都會(huì)有不想讓別人知道的隱私,或者是上班時(shí)間偷偷摸魚怕被發(fā)現(xiàn)的小秘密。那怎么辦?就干脆把隱私鎖起來!從源頭上杜絕被他人偷窺自己的隱私。本文就來用Python實(shí)現(xiàn)一個(gè)windows倒計(jì)時(shí)鎖屏功能,需要的可以參考一下
    2023-04-04
  • 深入淺析Python的類

    深入淺析Python的類

    這篇文章是一篇關(guān)于python基礎(chǔ)知識(shí)內(nèi)容,主要講述了關(guān)于類的相關(guān)知識(shí)點(diǎn),有興趣的朋友參考下。
    2018-06-06
  • python pycharm的安裝及其使用

    python pycharm的安裝及其使用

    這篇文章主要介紹了python pycharm的安裝及其使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python redis操作實(shí)例分析【連接、管道、發(fā)布和訂閱等】

    Python redis操作實(shí)例分析【連接、管道、發(fā)布和訂閱等】

    這篇文章主要介紹了Python redis操作,結(jié)合實(shí)例形式分析了Python redis的連接、管道、發(fā)布和訂閱等相關(guān)概念、原理及操作技巧,需要的朋友可以參考下
    2019-05-05
  • pandas中ix的使用詳細(xì)講解

    pandas中ix的使用詳細(xì)講解

    這篇文章主要介紹了pandas中ix的使用詳細(xì)講解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • sublime text 3配置使用python操作方法

    sublime text 3配置使用python操作方法

    下面小編就為大家?guī)硪黄猻ublime text 3配置使用python操作方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06

最新評(píng)論