leetcode 旋轉陣列

2021-10-07 02:14:53 字數 1727 閱讀 6471

旋轉陣列

給定乙個陣列,將陣列中的元素向右移動 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) 的 原地 演算法。

解答

##自己寫的,但是不對,需要進一步學習

import numpy as np

nums =[1

,2,3

,4,5

,6,7

]k=3num2=np.arange(k)a=0

c=0d=len

(nums)

for i in

range

(d-1

,d-k-1,

-1):

num2[a]

=nums[i]

if aa+=

1for j in

range

(d-1

,d-k-2,

-1):

nums[j]

=nums[j-k]

for b in

range

(d-k-2,

0,-1

):nums[b]

=num2[c]

if c<=k:

c+=1nums[0]

=num2[k-

1]

**

乙個乙個旋轉

旋轉陣列是乙個 進佇列 出佇列 動作,用下標來控制進出順序

k是要移動的次數,輸入陣列的長度是隊的長度,長度減去次數就是元素將要移動到位置的下標位址

k要對長度取餘不出錯

nums =[1

,2,3

,4,5

,6,7

]k=3temp=

k=k%

len(nums)

print

(k)for i in

range

(l):

)

nums[:]

=temp

print

(nums)

列表鏈結 陣列分成兩部分重新合併,

class

solution

(object):

defrotate

(self, nums, k)

:"""

do not return anything, modify nums in-place instead.

"""k = k%

len(nums)

nums[:]

= nums[

-k:]

+nums[

:-k]

前乙個自己編寫,後兩個的作者編寫

LeetCode 旋轉陣列

將包含n 個元素的陣列向右旋轉 k 步。例如,如果 n 7 k 3,給定陣列 1,2,3,4,5,6,7 向右旋轉後的結果為 5,6,7,1,2,3,4 注意 盡可能找到更多的解決方案,這裡最少有三種不同的方法解決這個問題。要求空間複雜度為 o 1 關聯的問題 反轉字串中的單詞 ii public ...

LeetCode 旋轉陣列

給定乙個陣列,將陣列中的元素向右移動 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...

leetcode 旋轉陣列

給定乙個陣列,將陣列中的元素向右移動 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,...