版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
楊婭娟刷題筆記前言在學(xué)習(xí)計算機科學(xué)的過程中,刷題是一種常見的學(xué)習(xí)方法。通過刷題,我們可以鞏固基礎(chǔ)知識,提高解決問題的能力。本文檔記錄了我的刷題筆記,旨在總結(jié)和分享刷題的經(jīng)驗和技巧。目錄數(shù)據(jù)結(jié)構(gòu)數(shù)組鏈表棧和隊列算法遞歸與回溯動態(tài)規(guī)劃貪心算法數(shù)據(jù)結(jié)構(gòu)數(shù)組數(shù)組是一種線性數(shù)據(jù)結(jié)構(gòu),可以存儲相同類型的元素。常見的數(shù)組操作包括增刪改查等。一維數(shù)組一維數(shù)組是最基本的數(shù)組形式,可以使用下標訪問元素。#初始化一個一維數(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ù)組,可以理解為表格或矩陣。#初始化一個二維數(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é)點組成,通過指針將節(jié)點串聯(lián)起來。單鏈表單鏈表是一種常見的鏈表形式,每個節(jié)點包含一個值和指向下一個節(jié)點的指針。#定義單鏈表的節(jié)點類
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é)點
new_node=ListNode(4)
new_node.next=head
head=new_node
#刪除節(jié)點
head=head.next雙鏈表雙鏈表在單鏈表的基礎(chǔ)上,每個節(jié)點多了一個指向前一個節(jié)點的指針。#定義雙鏈表的節(jié)點類
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é)點
new_node=ListNode(4)
new_node.next=head
head.prev=new_node
head=new_node
#刪除節(jié)點
head=head.next
head.prev=None棧和隊列棧和隊列是兩種常見的數(shù)據(jù)結(jié)構(gòu)。棧棧是一種后進先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),可以使用列表來模擬棧的行為。#創(chuàng)建一個棧
stack=[]
#入棧
stack.append(1)
stack.append(2)
stack.append(3)
#出棧
top=stack.pop()
print(top)#輸出:3
#棧是否為空
print(len(stack)==0)#輸出:False隊列隊列是一種先進先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),可以使用collections模塊中的deque來實現(xiàn)隊列。fromcollectionsimportdeque
#創(chuàng)建一個隊列
queue=deque()
#入隊
queue.append(1)
queue.append(2)
queue.append(3)
#出隊
front=queue.popleft()
print(front)#輸出:1
#隊列是否為空
print(len(queue)==0)#輸出:False算法遞歸與回溯遞歸是一種通過函數(shù)體內(nèi)調(diào)用自身的方式來解決問題的方法?;厮菔且环N通過不斷嘗試可能的解決方案來找到問題解決方法的方法。遞歸遞歸算法通常有一個遞歸終止條件,通過不斷迭代地調(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動態(tài)規(guī)劃動態(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版投資擔(dān)保合同風(fēng)險控制條款3篇
- 如何記憶更多的知識點
- 二零二五年度鋰離子蓄電池銷售合同范本3篇
- 二零二五年度個人間家庭農(nóng)場貸款合同3篇
- 零擔(dān)貨物運輸合同三篇
- 教師行業(yè)安全生產(chǎn)工作總結(jié)
- 二零二五年度影視制作公司演員個人聘用合同2篇
- 二零二五個人住宅租賃合同(含租賃保證金退還條件)2篇
- 二零二五年度個人擔(dān)保合同書范本:珠寶首飾抵押擔(dān)保
- 二零二五年度綠色快遞柜場地租賃與快遞代收協(xié)議書3篇
- 廣東省深圳市2024-2025學(xué)年高一上學(xué)期期末考試英語試題(含答案)
- 人文關(guān)懷在護理工作中的體現(xiàn)
- 2025年1月八省聯(lián)考高考綜合改革適應(yīng)性測試-高三生物(陜西、山西、寧夏、青海卷) 含解析
- 醫(yī)藥行業(yè)2025年策略報告:曙光初現(xiàn)機遇增加
- 開工第一課安全培訓(xùn)內(nèi)容
- 社會主義核心價值觀課件
- 《公路養(yǎng)護安全培訓(xùn)》課件
- 第七講推動構(gòu)建新時代的大國關(guān)系格局-2024年形勢與政策(課件)
- 2024年高考真題-化學(xué)(天津卷) 含解析
- 醫(yī)院食材采購與配送實施方案
- 文書模板-護理規(guī)培生座談會記錄
評論
0/150
提交評論