每日一題力扣189陣列的旋轉 取模這個想法好棒!

2022-07-05 22:33:14 字數 879 閱讀 1662

給定乙個陣列,將陣列中的元素向右移動k個位置,其中k是非負數。

正解:

class

solution:

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

class

solution:

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...