是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 壓縮類空間 在...