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