力扣學習筆記 day6

2021-10-16 09:14:41 字數 2528 閱讀 5977

給定兩個以字串形式表示的非負整數num1num2,返回num1num2的乘積,它們的乘積也表示為字串形式。

eg

輸入:num1 = 「123」, num2 = 「456」

輸出:「56088」

要求

不能使用任何標準庫的大數型別(比如 biginteger)直接將輸入轉換為整數來處理

因為要求不能直接轉化為整型數計算,所以我的想法是,利用兩個迴圈,將每個單獨數字字元轉化為整形,然後像小學時的乘法算式一樣計算,時間複雜度為o(mn),m,n分別為兩個字串的長度,如下圖:

具體的**實現如下:

l1,l2=

list

(num1)

,list

(num2)

res=

0for i in l1:

res*=

10 tmp=

0 ii=

int(i)

for j in l2:

tmp=tmp*

10+ii*

int(j)

res+=tmp

return

str(res)

給定乙個沒有重複數字的序列,要求返回它的全排列

eg

輸入:[1,2,3]

輸出:

[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]

用回溯方法,深度遍歷陣列,每次取乙個數,實現如下:

res=

defdfs

(n):

if n==

len(nums)-1

:#遍歷到最後乙個數則結束,並將當前排列新增到答案中:]

)return

for i in

range

(n,len

(nums)):

nums[i]

,nums[n]

=nums[n]

,nums[i]

dfs(n+1)

nums[i]

,nums[n]

=nums[n]

,nums[i]

dfs(0)

return res

上面這個方法在取數時,利用互換的方式取數,未使用額外的空間,其實還可以換種做法,定義乙個空陣列tmp,作為臨時儲存使用。

res=

defdfs

(n,tmp):if

not n:

return

for i in

range

(len

(n))

:#取出第i個數加到tmp裡

dfs(n[

:i]+n[i+1:

],tmp+

[n[i]])

dfs(nums,

)return res

給定乙個整數陣列 nums ,找到乙個具有最大和的連續子陣列(子陣列最少包含乙個元素),返回其最大和。

eg

輸入:[-2,1,-3,4,-1,2,1,-5,4]

輸出:6

解釋:連續子陣列 [4,-1,2,1] 的和最大,為 6。

用乙個數來儲存當前最大的連續和,每遍歷到乙個數,看之前的連續和是不是正的

tmp=nums[0]

res=tmp

for i in

range

(len

(nums)):

if tmp>0:

tmp+=nums[i]

else

: tmp=nums[i]

res=

max(res,tmp)

return res

時間複雜度為o(n)

同樣的遍歷,直接在原陣列上記錄當前最大的連續和。

時間複雜度也是o(n)

for i in

range(1

,len

(nums)):

nums[i]

=max

(nums[i-1]

+nums[i]

,nums[i]

)return

max(nums)

JAVA學習筆記Day6

型別相同,個數不同時構成可變引數。列 private static int sumup int.values 1 氣泡排序 相鄰的兩個數比較大小並按規律調換位置,值到確定從數值依次從小到大。2 選擇排序 確定乙個位置最大或最小,然後分別用其餘的數與當前確定位置的數進行比較,如果想拿到從大到小,那麼每...

python學習筆記 day6

open方法基本使用 open file,mode r encoding none 幾種開啟模式 r 唯讀模式 w 寫模式,如果檔案在,先清空 危險!x 建立模式,如果檔案在,會報錯 a 類似日誌 b 二進位制模式 t 文字模式 r w 個 件物件被open 法建立後,這個物件可 的有下 這些 cl...

Day 6 學習筆記 可信計算 6

乙個不小心就幾天沒有學習,我覺得可能是因為幾天前交了週報的原因,我一下子就放鬆了起來,打了幾天的懷舊遊戲。今天閱讀的主要內容來自一本書,a practical guide to tpm2.0 這本書來自於師兄推薦,作者是tpm2.0的專案負責人。很值得一讀。目前我只閱讀了書的前兩章,但是第二章只看了...