版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
楊婭娟刷題筆記前言在學(xué)習(xí)計(jì)算機(jī)科學(xué)的過程中,刷題是一種常見的學(xué)習(xí)方法。通過刷題,我們可以鞏固基礎(chǔ)知識(shí),提高解決問題的能力。本文檔記錄了我的刷題筆記,旨在總結(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ù)組是一種線性數(shù)據(jù)結(jié)構(gòu),可以存儲(chǔ)相同類型的元素。常見的數(shù)組操作包括增刪改查等。一維數(shù)組一維數(shù)組是最基本的數(shù)組形式,可以使用下標(biāo)訪問元素。#初始化一個(gè)一維數(shù)組
arr=[1,2,3,4,5]
#訪問數(shù)組元素
print(arr[0])#輸出:1
print(arr[2])#輸出:3
#修改數(shù)組元素
arr[1]=10
print(arr)#輸出:[1,10,3,4,5]
#數(shù)組長度
print(len(arr))#輸出:5二維數(shù)組二維數(shù)組是一種元素為一維數(shù)組的數(shù)組,可以理解為表格或矩陣。#初始化一個(gè)二維數(shù)組
matrix=[[1,2,3],
[4,5,6],
[7,8,9]]
#訪問二維數(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)組成,通過指針將節(jié)點(diǎn)串聯(lián)起來。單鏈表單鏈表是一種常見的鏈表形式,每個(gè)節(jié)點(diǎn)包含一個(gè)值和指向下一個(gè)節(jié)點(diǎn)的指針。#定義單鏈表的節(jié)點(diǎn)類
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)類
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ì)列是兩種常見的數(shù)據(jù)結(jié)構(gòu)。棧棧是一種后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),可以使用列表來模擬棧的行為。#創(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來實(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算法遞歸與回溯遞歸是一種通過函數(shù)體內(nèi)調(diào)用自身的方式來解決問題的方法。回溯是一種通過不斷嘗試可能的解決方案來找到問題解決方法的方法。遞歸遞歸算法通常有一個(gè)遞歸終止條件,通過不斷迭代地調(diào)用自身來逐步解決問題。#階乘
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)回溯回溯算法通常用于在一組可能的解決方案中搜索正確的解。#八皇后問題
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ī)劃是一種通過將問題分解為子問題并保存子問題的解來解決問題的方法。#斐波那契數(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]貪心算法貪心算法是一種通過每次選擇當(dāng)前局部最優(yōu)解來獲取全局最優(yōu)解的方法。#跳躍游戲
defcan_jump(nums):
last_pos=len(nums)-1
foriin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年合伙市場(chǎng)拓展協(xié)議
- 2025年仲裁裁決合同范本
- 2025年劍術(shù)表演協(xié)議
- 2025年度高端商業(yè)街區(qū)門面店鋪轉(zhuǎn)讓及租賃合作協(xié)議書3篇
- 二零二五版首付款分期購房借款合同樣本3篇
- 2025年度木地板翻新與保養(yǎng)服務(wù)合同4篇
- 2025年新型節(jié)能廚房電器研發(fā)與銷售合作協(xié)議4篇
- 2025年度個(gè)人分紅協(xié)議書包含金融科技分紅條款4篇
- 二零二五年度新型木托盤租賃及信息化管理服務(wù)合同4篇
- 2025年度上市公司合規(guī)管理法律顧問合同
- 湖北省石首楚源“源網(wǎng)荷儲(chǔ)”一體化項(xiàng)目可研報(bào)告
- 醫(yī)療健康大數(shù)據(jù)平臺(tái)使用手冊(cè)
- 碳排放管理員 (碳排放核查員) 理論知識(shí)考核要素細(xì)目表四級(jí)
- 撂荒地整改協(xié)議書范本
- 診所負(fù)責(zé)人免責(zé)合同范本
- 2024患者十大安全目標(biāo)
- 會(huì)陰切開傷口裂開的護(hù)理查房
- 實(shí)驗(yàn)報(bào)告·測(cè)定雞蛋殼中碳酸鈣的質(zhì)量分?jǐn)?shù)
- 部編版小學(xué)語文五年級(jí)下冊(cè)集體備課教材分析主講
- 電氣設(shè)備建筑安裝施工圖集
- 《工程結(jié)構(gòu)抗震設(shè)計(jì)》課件 第10章-地下建筑抗震設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論