資料結構與演算法

2021-10-08 03:46:10 字數 2899 閱讀 4967

實現快速排序

quicksort =

lambda x:

iflen

( x )

==0 \

else quicksort(

[s for s in x[1:

]if s <= x[0]

])+ \ [x[0]

]+ quicksort(

[s for s in x[1:

]if s > x[0]

])

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭

class

listnode

:def

__init__

(self, x)

: self.val = x

self.

next

=none

defreverselist

(phead):if

not phead:

return

none

head = listnode(0)

head.

next

= phead

p = phead

while

(p.next):

tp = p.

next

p.next

= p.

next

.next

tp.next

= head.

next

head.

next

= tp

return head.

next

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba

def

helper

(s):

iflen

(s)==1:

return s[0]

res =

for i in

range

(len

(s))

: l = helper(s[

:i]+ s[i+1:

])for j in l:

+ j)

return res

defpermutation

(ss):if

not ss:

return

words =

list

(ss)

return

list

(sorted

(set

(helper(words)))

)print

(permutation(

'aabbccd'

))

給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如, (5,3,7,2,4,6,8) 中,按結點數值大小順序第三小結點的值為4

# 返回對應節點treenode

defkthnode

(self, proot, k)

:# write code here

ifnot proot:

return

none

stack =

while proot or stack:

while proot:

proot = proot.left

proot = stack.pop(

) k -=

1if k ==0:

return proot

proot = proot.right

翻轉這些句子順序,但是單詞中的字母順序不變,如:」i am a student.」 → 「student. a am i」¶

def

reversesentence

(self, s)

: stack =

[n for n in s.split(

' ')

] stack.reverse(

)return

' '.join(stack)

print

(solution(

).reversesentence(

"i am a student."

))

求兩個字串的最長公共子串長度。如: a=」abcd」, b=」abcr」,則最長公共子串長度為3

def

find_lcsubstr

(s1, s2)

: m =[[

0for i in

range

(len

(s2)+1

)]for j in

range

(len

(s1)+1

)]mmax =

0for i in

range

(len

(s1)):

for j in

range

(len

(s2)):

if s1[i]

== s2[j]

: m[i +1]

[j +1]

= m[i]

[j]+

1 mmax =

max(mmax, m[i +1]

[j +1]

)return mmax

print

(find_lcsubstr(

"abcd"

,"abcr"

))

資料結構與演算法 演算法 演算法和資料結構

資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...

資料結構 資料結構與演算法01

1 求一組整數中的最大值。演算法 基本操作是 比較兩個數的大小 模型 仔細想想 你並不知道這個整數到底是多大?整數過大你該怎麼去表示?2 足協的資料庫管理的程式 演算法 需要管理的專案?如何管理?使用者介面?模型 3 資料與資料結構 資料 所有能被輸入到計算機中,並被計算機處理的符號的集合計算機操作...

資料結構 資料結構與演算法02

1 演算法設計的原則 設計演算法時,通常應考慮達到以下目標 1,正確性 2,可讀性 3,健壯性 4,高效率與低儲存量需求 1,正確性 規格說明 四個層次 a,程式中不含語法錯誤 b,程式對於幾組輸入資料能夠得出滿足要求的結果 c,程式對精心選擇的 典型 苛刻切帶有刁難性的幾組輸入資料能夠得出滿足要求...