版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2026年互聯(lián)網(wǎng)技術(shù)崗面試寶典:算法題快速上手指南一、鏈表算法(3題,每題10分)背景:鏈表是互聯(lián)網(wǎng)面試中的高頻考點,尤其在分布式系統(tǒng)、緩存機制、數(shù)據(jù)流處理中應(yīng)用廣泛。1.題目:給定一個鏈表,判斷是否存在環(huán)。如果存在,返回環(huán)的入口節(jié)點;如果不存在,返回`null`。示例:輸入:`1->2->3->4->2`(形成環(huán))輸出:節(jié)點`2`2.題目:合并兩個有序鏈表,返回合并后的頭節(jié)點。示例:輸入:`1->3->5`和`2->4->6`輸出:`1->2->3->4->5->6`3.題目:刪除鏈表的倒數(shù)第`n`個節(jié)點,并返回新鏈表的頭節(jié)點。示例:輸入:`1->2->3->4->5`,`n=2`輸出:`1->2->3->5`二、棧與隊列算法(2題,每題15分)背景:棧和隊列常用于解決括號匹配、滑動窗口、BFS等問題,是系統(tǒng)設(shè)計的基礎(chǔ)。1.題目:實現(xiàn)一個`MinStack`類,支持在`O(1)`時間復(fù)雜度內(nèi)獲取棧的最小值。示例:pythonstack=MinStack()stack.push(5)stack.push(2)stack.getMin()#返回2stack.pop()stack.getMin()#返回52.題目:給定一個字符串`s`,判斷是否可以通過刪除一些字符使其變?yōu)橛行У睦ㄌ柎╜()`)。示例:輸入:`"()[]{}"`輸出:`True`輸入:`"(]"`輸出:`False`三、樹與二叉搜索樹(3題,每題10分)背景:樹結(jié)構(gòu)在數(shù)據(jù)庫索引、文件系統(tǒng)、決策樹中應(yīng)用廣泛,是算法面試的核心。1.題目:二叉樹的中序遍歷、前序遍歷和后序遍歷。示例:輸入:1/\23輸出:-中序:`2->1->3`-前序:`1->2->3`-后序:`2->3->1`2.題目:判斷兩棵二叉樹是否相同(結(jié)構(gòu)相同且節(jié)點值相同)。示例:樹1:樹2:11/\/\2222輸出:`True`3.題目:在二叉搜索樹中查找給定值的節(jié)點,并返回其父節(jié)點。示例:輸入:`root=[4,2,7,1,3]`,`target=2`輸出:父節(jié)點`4`四、哈希表算法(3題,每題10分)背景:哈希表是解決高頻查找、去重、統(tǒng)計問題的利器,尤其在社交平臺、電商系統(tǒng)中有廣泛應(yīng)用。1.題目:給定一個字符串`s`,返回其中不重復(fù)的最長子串的長度。示例:輸入:`"abcabcbb"`輸出:`3`("abc")2.題目:判斷兩個數(shù)組中是否有至少一個共同元素。示例:輸入:`nums1=[1,2,3]`,`nums2=[4,5,6]`輸出:`False`3.題目:實現(xiàn)`LRU`緩存機制,支持`get`和`put`操作。示例:pythoncache=LRUCache(2)cache.put(1,1)cache.put(2,2)cache.get(1)#返回1cache.put(3,3)#去除鍵2cache.get(2)#返回-1(未找到)五、動態(tài)規(guī)劃算法(2題,每題15分)背景:動態(tài)規(guī)劃常用于解決背包問題、最長遞增子序列等,是算法面試的難點。1.題目:給定一個整數(shù)數(shù)組,返回其最長遞增子序列的長度。示例:輸入:`[10,9,2,5,3,7,101,18]`輸出:`4`(5->7->101或2->3->7->101)2.題目:零錢兌換問題:給定面值`coins`和總金額`amount`,返回最少需要多少枚硬幣。示例:輸入:`coins=[1,2,5]`,`amount=11`輸出:`3`(5+5+1)六、貪心算法(2題,每題15分)背景:貪心算法在資源分配、排序優(yōu)化中效率高,是面試常考題型。1.題目:合并區(qū)間:給定一個區(qū)間數(shù)組,合并所有重疊的區(qū)間。示例:輸入:`[[1,3],[2,6],[8,10],[15,18]]`輸出:`[[1,6],[8,10],[15,18]]`2.題目:在一條直線上有`n`個加油站,每個加油站提供一定量的油,返回從起點到終點的最小加油次數(shù)。示例:輸入:`[1,2,3,4,5]`(每段距離相同)輸出:`1`(只需在起點加滿油)七、字符串算法(2題,每題15分)背景:字符串處理在自然語言處理、數(shù)據(jù)校驗中應(yīng)用廣泛。1.題目:翻轉(zhuǎn)字符串中的單詞順序,但保持每個單詞內(nèi)部字符順序不變。示例:輸入:`"theskyisblue"`輸出:`"blueisskythe"`2.題目:實現(xiàn)字符串的子串查找(暴力匹配和KMP算法可選)。示例:輸入:`text="ABABDABACDABABCABAB"`,`pattern="ABABCABAB"`輸出:`10`(子串開始位置)八、數(shù)學(xué)與位運算(2題,每題15分)背景:數(shù)學(xué)與位運算是低級優(yōu)化的重要基礎(chǔ),常用于面試中的思維考察。1.題目:給定一個非負(fù)整數(shù)`n`,返回其二進制表示中`1`的個數(shù)。示例:輸入:`n=11`(二進制`1011`)輸出:`3`2.題目:判斷一個數(shù)是否是`2`的冪次方。示例:輸入:`n=16`輸出:`True`(`2^4=16`)答案與解析一、鏈表算法1.判斷鏈表環(huán)的入口節(jié)點答案:pythonclassListNode:def__init__(self,x):self.val=xself.next=NonedefdetectCycle(head:ListNode)->ListNode:slow,fast=head,headwhilefastandfast.next:slow=slow.nextfast=fast.next.nextifslow==fast:slow=headwhileslow!=fast:slow=slow.nextfast=fast.nextreturnslowreturnNone解析:-使用快慢指針判斷環(huán)(Floyd循環(huán)檢測)。當(dāng)`slow==fast`時存在環(huán),重置`slow`為頭節(jié)點并移動直到找到環(huán)入口。-時間復(fù)雜度:`O(N)`,空間復(fù)雜度:`O(1)`。2.合并兩個有序鏈表答案:pythondefmergeTwoLists(l1:ListNode,l2:ListNode)->ListNode:dummy=ListNode(0)current=dummywhilel1andl2:ifl1.val<l2.val:current.next=l1l1=l1.nextelse:current.next=l2l2=l2.nextcurrent=current.nextcurrent.next=l1orl2returndummy.next解析:-使用虛擬頭節(jié)點簡化邊界處理,逐個比較節(jié)點值并合并。3.刪除倒數(shù)第`n`個節(jié)點答案:pythondefremoveNthFromEnd(head:ListNode,n:int)->ListNode:dummy=ListNode(0)dummy.next=headfirst=dummysecond=dummyfor_inrange(n+1):first=first.nextwhilefirst:first=first.nextsecond=second.nextsecond.next=second.next.nextreturndummy.next解析:-使用雙指針,`first`先走`n+1`步,然后`first`和`second`同步移動,`second`的`next`即為待刪除節(jié)點。二、棧與隊列算法1.MinStack實現(xiàn)答案:pythonclassMinStack:def__init__(self):self.stack=[]self.min_stack=[]defpush(self,val:int):self.stack.append(val)ifnotself.min_stackorval<=self.min_stack[-1]:self.min_stack.append(val)defpop(self)->int:ifself.stack:top=self.stack.pop()iftop==self.min_stack[-1]:self.min_stack.pop()returntopreturnNonedefgetMin(self)->int:returnself.min_stack[-1]ifself.min_stackelseNone解析:-維護一個輔助棧`min_stack`存儲當(dāng)前最小值,`push`時若`val`小于等于當(dāng)前最小值則入棧,`pop`時若出棧元素等于最小值則同步出棧。2.括號匹配答案:pythondefisValid(s:str)->bool:stack=[]mapping={')':'(','}':'{',']':'['}forcharins:ifcharinmapping:top=stack.pop()ifstackelse'#'ifmapping[char]!=top:returnFalseelse:stack.append(char)returnnotstack解析:-使用棧匹配括號,遇到閉括號時檢查棧頂是否為對應(yīng)開括號。三、樹與二叉搜索樹1.樹的遍歷答案:python中序遍歷(遞歸)definorderTraversal(root):returninorderTraversal(root.left)+[root.val]+inorderTraversal(root.right)ifrootelse[]前序遍歷(遞歸)defpreorderTraversal(root):return[root.val]+preorderTraversal(root.left)+preorderTraversal(root.right)ifrootelse[]后序遍歷(遞歸)defpostorderTraversal(root):returnpostorderTraversal(root.left)+postorderTraversal(root.right)+[root.val]ifrootelse[]解析:-遞歸實現(xiàn)簡單直觀,中序`左-根-右`,前序`根-左-右`,后序`左-右-根`。2.判斷兩棵樹相同答案:pythondefisSameTree(p,q):ifnotpandnotq:returnTrueifnotpornotq:returnFalsereturnp.val==q.valandisSameTree(p.left,q.left)andisSameTree(p.right,q.right)解析:-遞歸比較節(jié)點值和子樹是否相同。3.查找節(jié)點父節(jié)點答案:pythondeffindParent(root,target):ifnotroot:returnNoneifroot.leftandroot.left.val==target:returnrootifroot.rightandroot.right.val==target:returnrootreturnfindParent(root.left,target)orfindParent(root.right,target)解析:-遞歸遍歷左右子樹,找到目標(biāo)節(jié)點時返回父節(jié)點。四、哈希表算法1.最長無重復(fù)子串答案:pythondeflengthOfLongestSubstring(s:str)->int:char_map={}left=0max_len=0forright,charinenumerate(s):ifcharinchar_mapandchar_map[char]>=left:left=char_map[char]+1char_map[char]=rightmax_len=max(max_len,right-left+1)returnmax_len解析:-滑動窗口+哈希表記錄字符上一次出現(xiàn)位置,優(yōu)化重復(fù)字符處理。2.判斷數(shù)組有公共元素答案:pythondefhasCommon(nums1,nums2):returnset(nums1)&set(nums2)解析:-集合交集操作可快速判斷是否有公共元素。3.LRU緩存機制答案:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.order=[]defget(self,key:int)->int:ifkeyinself.cache:self.order.remove(key)self.order.append(key)returnself.cache[key]return-1defput(self,key:int,value:int)->None:ifkeyinself.cache:self.order.remove(key)eliflen(self.cache)==self.capacity:self.cache.pop(self.order.pop(0))self.cache[key]=valueself.order.append(key)解析:-使用哈希表記錄鍵值對,雙向鏈表維護使用順序。五、動態(tài)規(guī)劃算法1.最長遞增子序列答案:pythondeflengthOfLIS(nums):dp=[1]len(nums)foriinrange(1,len(nums)):forjinrange(i):ifnums[i]>nums[j]:dp[i]=max(dp[i],dp[j]+1)returnmax(dp)解析:-`dp[i]`表示以`nums[i]`結(jié)尾的最長遞增子序列長度,遍歷更新。2.零錢兌換答案:pythondefcoinChange(coins,amount):dp=[amount+1](amount+1)dp[0]=0foriinrange(1,amount+1):forcoinincoins:ifi>=coin:dp[i]=min(dp[i],dp[i-coin]+1)returndp[amount]ifdp[amount]!=amount+1else-1解析:-`dp[i]`表示湊出`i`所需的最少硬幣數(shù),貪心更新。六、貪心算法1.合并區(qū)間答案:pythondefmerge(intervals):intervals.sort(key=lambdax:x[0])merged=[]forintervalinintervals:ifnotmergedormerged[-1][1]<interval[0]:merged.append(interval)else:merged[-1][1]=max(merged[-1][1],interval[1])returnmerged解析:-先按起點排序,貪心合并重疊區(qū)間。2.最少加油次數(shù)答案:pythondefminRefuelStops(target,fuel,positions):pq=[]current_fuel=0stops=0positions=sorted([(p,f)forp,finzip(positions,fuel)])foriinrange(len(positions)-1,-1,-1):p,f=positions[i]ifp+current_fuel>=target:returnstopswhilepqandcurrent_fuel<p:current_fuel+=-heapq.heappop(pq)stops+=1ifcurrent_fuel<p:return-1heapq.heappush(pq,-f)returnstopsifcurrent_fuel>=targetelse-1解析:-貪心選擇當(dāng)前能覆蓋最遠(yuǎn)距離的加油站,優(yōu)先級隊列(最大堆)維護最近加油站。七、字符串算法1.翻轉(zhuǎn)單詞順序答案:pythondefreverseWords(s:str)->str:return''.join(s.split()[::-1])解析:-按空格分割反轉(zhuǎn)再連接。2.子串查找(
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 食品衛(wèi)生及質(zhì)量管理制度
- 衛(wèi)生院內(nèi)部管理工作制度
- 衛(wèi)生院醫(yī)養(yǎng)結(jié)合制度
- 國土所衛(wèi)生管理制度
- 衛(wèi)生院采管理購制度
- 壞環(huán)境衛(wèi)生管理制度
- 徐寨村環(huán)境衛(wèi)生管理制度
- 火鍋店倉庫衛(wèi)生管理制度
- 烘焙房衛(wèi)生管理制度
- 衛(wèi)生所內(nèi)部管理制度
- 尋脈山河:中國主要河流與湖泊的空間認(rèn)知與生態(tài)理解-八年級地理教學(xué)設(shè)計
- 達人精準(zhǔn)運營方案
- 四川省涼山州2025-2026學(xué)年上學(xué)期期末考試七年級數(shù)學(xué)試題(含答案)
- 語文試題-汕頭市2025-2026學(xué)年度普通高中畢業(yè)班教學(xué)質(zhì)量監(jiān)測(含解析)
- 水利工程項目設(shè)計審批流程與管理要點
- 湖北省2026屆高三上學(xué)期元月調(diào)考政治+答案
- 垃圾填埋場排水施工方案
- 辦公室頸椎保養(yǎng)課件
- T∕CECS10283-2023建筑用覆鋁膜隔熱金屬板
- 員工個人成長經(jīng)歷分享
- 凝血六項課件
評論
0/150
提交評論