




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
楊婭娟刷題筆記前言在學(xué)習(xí)計(jì)算機(jī)科學(xué)的過(guò)程中,刷題是一種常見(jiàn)的學(xué)習(xí)方法。通過(guò)刷題,我們可以鞏固基礎(chǔ)知識(shí),提高解決問(wèn)題的能力。本文檔記錄了我的刷題筆記,旨在總結(jié)和分享刷題的經(jīng)驗(yàn)和技巧。目錄數(shù)據(jù)結(jié)構(gòu)數(shù)組鏈表?xiàng):完?duì)列算法遞歸與回溯動(dòng)態(tài)規(guī)劃貪心算法數(shù)據(jù)結(jié)構(gòu)數(shù)組數(shù)組是一種線(xiàn)性數(shù)據(jù)結(jié)構(gòu),可以存儲(chǔ)相同類(lèi)型的元素。常見(jiàn)的數(shù)組操作包括增刪改查等。一維數(shù)組一維數(shù)組是最基本的數(shù)組形式,可以使用下標(biāo)訪(fǎng)問(wèn)元素。#初始化一個(gè)一維數(shù)組
arr=[1,2,3,4,5]
#訪(fǎng)問(wèn)數(shù)組元素
print(arr[0])#輸出:1
print(arr[2])#輸出:3
#修改數(shù)組元素
arr[1]=10
print(arr)#輸出:[1,10,3,4,5]
#數(shù)組長(zhǎng)度
print(len(arr))#輸出:5二維數(shù)組二維數(shù)組是一種元素為一維數(shù)組的數(shù)組,可以理解為表格或矩陣。#初始化一個(gè)二維數(shù)組
matrix=[[1,2,3],
[4,5,6],
[7,8,9]]
#訪(fǎng)問(wèn)二維數(shù)組元素
print(matrix[0][0])#輸出:1
print(matrix[1][2])#輸出:6
#修改二維數(shù)組元素
matrix[1][1]=10
print(matrix)#輸出:[[1,2,3],[4,10,6],[7,8,9]]
#二維數(shù)組行數(shù)和列數(shù)
print(len(matrix))#輸出:3
print(len(matrix[0]))#輸出:3鏈表鏈表是一種非連續(xù)的數(shù)據(jù)結(jié)構(gòu),由節(jié)點(diǎn)組成,通過(guò)指針將節(jié)點(diǎn)串聯(lián)起來(lái)。單鏈表單鏈表是一種常見(jiàn)的鏈表形式,每個(gè)節(jié)點(diǎn)包含一個(gè)值和指向下一個(gè)節(jié)點(diǎn)的指針。#定義單鏈表的節(jié)點(diǎn)類(lèi)
classListNode:
def__init__(self,val=0):
self.val=val
self.next=None
#創(chuàng)建單鏈表
head=ListNode(1)
node1=ListNode(2)
node2=ListNode(3)
head.next=node1
node1.next=node2
#遍歷單鏈表
cur=head
whilecur:
print(cur.val)
cur=cur.next
#插入新節(jié)點(diǎn)
new_node=ListNode(4)
new_node.next=head
head=new_node
#刪除節(jié)點(diǎn)
head=head.next雙鏈表雙鏈表在單鏈表的基礎(chǔ)上,每個(gè)節(jié)點(diǎn)多了一個(gè)指向前一個(gè)節(jié)點(diǎn)的指針。#定義雙鏈表的節(jié)點(diǎn)類(lèi)
classListNode:
def__init__(self,val=0):
self.val=val
self.prev=None
self.next=None
#創(chuàng)建雙鏈表
head=ListNode(1)
node1=ListNode(2)
node2=ListNode(3)
head.next=node1
node1.prev=head
node1.next=node2
node2.prev=node1
#遍歷雙鏈表(正向)
cur=head
whilecur:
print(cur.val)
cur=cur.next
#遍歷雙鏈表(反向)
cur=node2
whilecur:
print(cur.val)
cur=cur.prev
#插入新節(jié)點(diǎn)
new_node=ListNode(4)
new_node.next=head
head.prev=new_node
head=new_node
#刪除節(jié)點(diǎn)
head=head.next
head.prev=None棧和隊(duì)列棧和隊(duì)列是兩種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)。棧棧是一種后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),可以使用列表來(lái)模擬棧的行為。#創(chuàng)建一個(gè)棧
stack=[]
#入棧
stack.append(1)
stack.append(2)
stack.append(3)
#出棧
top=stack.pop()
print(top)#輸出:3
#棧是否為空
print(len(stack)==0)#輸出:False隊(duì)列隊(duì)列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),可以使用collections模塊中的deque來(lái)實(shí)現(xiàn)隊(duì)列。fromcollectionsimportdeque
#創(chuàng)建一個(gè)隊(duì)列
queue=deque()
#入隊(duì)
queue.append(1)
queue.append(2)
queue.append(3)
#出隊(duì)
front=queue.popleft()
print(front)#輸出:1
#隊(duì)列是否為空
print(len(queue)==0)#輸出:False算法遞歸與回溯遞歸是一種通過(guò)函數(shù)體內(nèi)調(diào)用自身的方式來(lái)解決問(wèn)題的方法。回溯是一種通過(guò)不斷嘗試可能的解決方案來(lái)找到問(wèn)題解決方法的方法。遞歸遞歸算法通常有一個(gè)遞歸終止條件,通過(guò)不斷迭代地調(diào)用自身來(lái)逐步解決問(wèn)題。#階乘
deffactorial(n):
ifn==0orn==1:
return1
else:
returnn*factorial(n-1)
#斐波那契數(shù)列
deffibonacci(n):
ifn==0orn==1:
returnn
else:
returnfibonacci(n-1)+fibonacci(n-2)回溯回溯算法通常用于在一組可能的解決方案中搜索正確的解。#八皇后問(wèn)題
defsolve_n_queens(n):
defbacktrack(row):
ifrow==n:
results.append(board[:])
else:
forcolinrange(n):
ifis_queen_valid(row,col):
board[row][col]='Q'
backtrack(row+1)
board[row][col]='.'
defis_queen_valid(row,col):
foriinrange(row):
ifboard[i][col]=='Q':
returnFalse
fori,jinzip(range(row-1,-1,-1),range(col+1,n)):
ifboard[i][j]=='Q':
returnFalse
fori,jinzip(range(row-1,-1,-1),range(col-1,-1,-1)):
ifboard[i][j]=='Q':
returnFalse
returnTrue
board=[['.'for_inrange(n)]for_inrange(n)]
results=[]
backtrack(0)
returnresults動(dòng)態(tài)規(guī)劃動(dòng)態(tài)規(guī)劃是一種通過(guò)將問(wèn)題分解為子問(wèn)題并保存子問(wèn)題的解來(lái)解決問(wèn)題的方法。#斐波那契數(shù)列
deffibonacci(n):
ifn==0orn==1:
returnn
dp=[0]*(n+1)
dp[0]=0
dp[1]=1
foriinrange(2,n+1):
dp[i]=dp[i-1]+dp[i-2]
returndp[n]貪心算法貪心算法是一種通過(guò)每次選擇當(dāng)前局部最優(yōu)解來(lái)獲取全局最優(yōu)解的方法。#跳躍游戲
defcan_jump(nums):
last_pos=len(nums)-1
foriin
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025水庫(kù)建設(shè)施工合同范本
- 2025【合同范本】私營(yíng)企業(yè)勞動(dòng)合同模板
- 2025專(zhuān)利權(quán)許可使用合同范本
- 2025采購(gòu)咨詢(xún)服務(wù)合同范本
- 2025設(shè)備轉(zhuǎn)讓協(xié)議書(shū)買(mǎi)賣(mài)合同
- 2025年青海貨運(yùn)叢業(yè)資格證考試題目及答案
- 連云港職業(yè)技術(shù)學(xué)院《房屋建筑學(xué)實(shí)訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海電力大學(xué)《國(guó)際工程合同管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧大連甘井子區(qū)育文中學(xué)2024-2025學(xué)年初三下學(xué)期二調(diào)考試語(yǔ)文試題含解析
- 江西高安中學(xué)2025屆高三5月綜合質(zhì)量檢測(cè)試題物理試題含解析
- 中國(guó)話(huà)劇史(本二·下)第二講課件
- 義務(wù)兵家庭優(yōu)待金審核登記表
- GA 255-2022警服長(zhǎng)袖制式襯衣
- GB/T 5202-2008輻射防護(hù)儀器α、β和α/β(β能量大于60keV)污染測(cè)量?jī)x與監(jiān)測(cè)儀
- GB/T 39560.4-2021電子電氣產(chǎn)品中某些物質(zhì)的測(cè)定第4部分:CV-AAS、CV-AFS、ICP-OES和ICP-MS測(cè)定聚合物、金屬和電子件中的汞
- GB/T 3452.4-2020液壓氣動(dòng)用O形橡膠密封圈第4部分:抗擠壓環(huán)(擋環(huán))
- 計(jì)劃生育協(xié)會(huì)基礎(chǔ)知識(shí)課件
- 【教材解讀】語(yǔ)篇研讀-Sailing the oceans
- 抗腫瘤藥物過(guò)敏反應(yīng)和過(guò)敏性休克
- 排水管道非開(kāi)挖預(yù)防性修復(fù)可行性研究報(bào)告
- 交通工程基礎(chǔ)習(xí)習(xí)題及參考答案
評(píng)論
0/150
提交評(píng)論