第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這個簡單的 ArrayRotation 代碼輸出錯誤?

這個簡單的 ArrayRotation 代碼輸出錯誤?

繁花不似錦 2023-09-19 14:04:50
為左數(shù)組旋轉(zhuǎn)編寫了一個簡單的代碼,得到了相同的數(shù)組,但沒有對其進行任何旋轉(zhuǎn),作為錯誤的輸出。def leftRotate(arr, d, n):    while (d-1) > 0:        leftRotatebyOne(arr, n)def leftRotatebyOne(arr, n):    temp = arr[0]    for i in range(n-1):        arr[i] = arr[i + 1]    arr[n - 1] = tempdef PrintArray(arr, size):    for i in range(size):        print("%d" % arr[i], end=" ")arr = []l = int(input("Enter the number of elements: "))for i in range(0, l):    ele = int(input())    arr.append(ele)d = int(input("Enter the number of rotations: "))n = len(arr)leftRotate(arr, d, n)PrintArray(arr, n)這是我得到的輸出的示例,Enter the number of elements: 3123Enter the number of rotations: 11 2 3我預(yù)計旋轉(zhuǎn)一圈后輸出為 2 3 1。
查看完整描述

3 回答

?
Qyouu

TA貢獻1786條經(jīng)驗 獲得超11個贊

我建議使用數(shù)組切片,然后將切片添加在一起,以執(zhí)行旋轉(zhuǎn)。


def left_rotate(data, num):

    return data[num:] + data[:num]


def right_rotate(data, num):

    return data[-num:] + data[:-num]

例如


>>> a = [1,2,3,4,5,6,7]

>>> left_rotate(a, 2)

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

>>> right_rotate(a, 2)

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

另請注意,collections.deque此行為已經(jīng)可用


>>> from collections import deque

>>> d = deque([1,2,3,4,5,6,7])

>>> d.rotate(2)

>>> d

deque([6, 7, 1, 2, 3, 4, 5])

>>> d.rotate(-2)

>>> d

deque([1, 2, 3, 4, 5, 6, 7])


查看完整回答
反對 回復(fù) 2023-09-19
?
慕妹3146593

TA貢獻1820條經(jīng)驗 獲得超9個贊

在函數(shù) leftRotate 中,

while 循環(huán)中有錯誤。

代替

while (d-1) > 0:
    leftRotatebyOne(arr, n)

while d > 0:
    leftRotatebyOne(arr, n)
    d -= 1


查看完整回答
反對 回復(fù) 2023-09-19
?
慕姐8265434

TA貢獻1813條經(jīng)驗 獲得超2個贊

當(dāng) 時d == 1,while (d-1) > 0:任何時候都不會被執(zhí)行。而且,你永遠不會減少 d。最簡單的解決方法是使用循環(huán)for _ in range(d):


def leftRotate(arr, d, n):

    for _ in range(d):

        leftRotatebyOne(arr, n)

注意: Python 有比這更好的旋轉(zhuǎn)方法。這段代碼看起來更像C而不是Python。例如,在 Python 中傳遞數(shù)組長度是沒有意義的。并且輪換可以在一次分配中完成。


def leftRotate(arr, d):

    d %= len(arr)

    for _ in range(d):

        arr[-1], arr[:-1] = arr[0], arr[1:]

科里·克萊默 (Cory Kramer) 的回答更加Python化。但它有一個錯誤,并且與你的問題的方法有所不同。錯誤在于,當(dāng)請求的旋轉(zhuǎn)次數(shù)高于列表的長度時,它不起作用。不同之處在于他們返回一個新列表而不是修改它。這兩個問題可以這樣解決:


def left_rotate(data, num):

    num %= len(data)

    data[:] = data[num:] + data[:num]


def right_rotate(data, num):

    num %= len(data)

    data[:] = data[-num:] + data[:-num]


查看完整回答
反對 回復(fù) 2023-09-19
  • 3 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號