給定乙個陣列,將陣列中的元素向右移動k
個位置,其中k
是非負數。
正解:
classsolution:
def rotate(self, nums: list[int], k: int) ->none:
"""do not return anything, modify nums in-place instead.
"""t=len(nums)
k=k % t#
取模是最棒的想法!
nums[:]=nums[::-1]
nums[:k]=nums[:k][::-1]
nums[k:]=nums[k:][::-1]
return nums
classsolution:
def rotate(self, nums: list[int], k: int) ->none:
"""do not return anything, modify nums in-place instead.
"""n=len(nums)#
設nums=[1,2,3,4,5,6,7],k=3,應得[5,6,7,1,2,3,4]
k=k%n
defturn(x,y):
while(xnums[x],nums[y]=nums[y],nums[x]
x+=1y-=1turn(0,n-k-1)#
將第一段反轉,即1234反轉成4321
turn(n-k,n-1)#
將第二段反轉,即567變成765
turn(0,n-1)#
全部反轉,即4321765變成5671234
return nums
LeetCode每日一題 189 旋轉陣列
tag array difficulty easy link 對於陣列元素的變動,最容易想到的就是暴力。旋轉k次,每次將陣列整體移動一次 題解class solution 複雜度分析 旋轉k次數組,那麼k n個元素會被移動到頭部,剩下的元素向後移動。在這個方法中,我們先將所有元素反轉,然後反轉前k個...
力扣189 旋轉陣列
三種解法,解法一很容易想到,後兩種解法比較巧妙,在這裡記錄一下。每次將陣列每一位向後挪動一位,挪動k nums.length次 k nums.length是因為挪動nums.length的倍數次相當於沒有挪動 時間複雜度 o kn 空間複雜度 o 1 class solution nums 0 la...
每日一題 力扣 計畫
98 驗證二叉搜尋樹 問題給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 1.節點的左子樹只包含小於當前節點的數。2.節點的右子樹只包含大於當前節點的數。3.所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 1 3 輸出 true示例2 輸入 5 1 4...