LeetCode Day1 P189 旋轉陣列

2021-10-14 09:35:26 字數 1622 閱讀 4225

是2021.1.8的每日一題,不過拖到了今天才來完成。

一開始很直接的思路就是利用python處理陣列的拼接,比較輕鬆的就寫出來了,用時28ms,記憶體15mb。

class

solution

:def

rotate

(self, nums: list[

int]

, k:

int)

->

none

:"""

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

"""l =

len(nums)

k %= l

nums[:]

= nums[

-k :

]+ nums[

:-k]

官方要求滿足in-place with o(1) extra space且擁有三種做法,所以又使用了三次旋轉的思路,即整體翻轉,前k翻轉,後k翻轉的做法。用時44ms,記憶體15.1mb。

class

solution

:def

rotate

(self, nums: list[

int]

, k:

int)

->

none

:"""

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

"""defswap

(l, r)

:while l < r:

nums[l]

, nums[r]

= nums[r]

, nums[l]

l +=

1 r -=

1

n =len(nums)

swap(

0, n -1)

swap(

0, n - k -2)

swap(n - k -

1, n -

1)

最後查了題解用了棧的思想, pop和insert。用時136ms,記憶體14.9mb。大草時間略長

class

solution

:def

rotate

(self, nums: list[

int]

, k:

int)

->

none

:"""

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

"""n =

len(nums)

for i in

range

(k % n)

: nums.insert(

0, nums[-1

])nums.pop(

)

又看了一下題解發現可以寫的簡便一點雖然也不是很必要。

nums.insert(

0, nums.pop(

))

p189,完。

(p 1 和 ( p 1)的區別

內容會持續更新,有錯誤的地方歡迎指正,謝謝 例1 下面程式的輸出結果是 include void main int p 3 p n cout 0 0 p 0 1 p 2 解析 p是乙個指標,乙個指向長度為3的陣列的指標。直接在p上偏移就是行,在 p上偏移就是列。比如 p 1 等價於p 1 0 等於4...

18章 表驅動方法 (1)

表驅動法是一種程式設計模式 scheme 從表裡面查詢資訊而不使用邏輯語句 if和else 根據 大全中的描述,凡是能通過邏輯語句來選擇處理的事物,都可以通過查表來選擇。但是對於簡單的邏輯,則不宜使用表驅動法,表驅動發更加適合複雜的邏輯。適當情況下使用表驅動法的幾個好處 生成的 簡單 容易修改維護 ...

jdk1 8記憶體分析 1

分為堆區和非堆區,以下對下圖進行分析和記錄 堆區分為young區,和old區,yong又分為2大塊,s區 from和to 和eden區,s區是同樣大小的兩部份,同一時間點下,只會有一塊有資料 主要是取代1.8之前的方法區,metaspace 分為ccs和codecache2份,ccs 壓縮類空間 在...