一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

算法面試真題:完美走位

算法與數(shù)據(jù)結(jié)構(gòu) ? 來(lái)源:吳師兄學(xué)算法 ? 2023-06-15 11:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

題目

在第一人稱射擊游戲中,玩家通過(guò)鍵盤(pán)的A、S、D、W四個(gè)按鍵控制游戲人物分別向左、向后、向右、向前進(jìn)行移動(dòng),從而完成走位。

假設(shè)玩家每按動(dòng)一次鍵盤(pán),游戲人物會(huì)向某個(gè)方向移動(dòng)一步,如果玩家在操作一定次數(shù)的鍵盤(pán)并且各個(gè)方向的步數(shù)相同時(shí),此時(shí)游戲人物必定會(huì)回到原點(diǎn),則稱此次走位為完美走位。

現(xiàn)給定玩家的走位(例如:ASDA),請(qǐng)通過(guò)更換其中一段連續(xù)走位的方式使得原走位能夠變成一個(gè)完美走位。其中待更換的連續(xù)走位可以是相同長(zhǎng)度的任何走位。

請(qǐng)返回待更換的連續(xù)走位的最小可能長(zhǎng)度。若果原走位本身是一個(gè)完美走位,則返回0。

輸入

輸入為由鍵盤(pán)字母表示的走位s,例如:ASDA

輸出

輸出為待更換的連續(xù)走位的最小可能長(zhǎng)度

備注

走位長(zhǎng)度1 ≤ s.length ≤ 10^5

s.length是4的倍數(shù)

s中只含有A,S,D,W四種字符

示例一

輸入

ASDW

輸出

0

說(shuō)明

已經(jīng)是完美走位了。

示例二

輸入

AASW

輸出

1

說(shuō)明

需要把一個(gè)A更換成D,這樣可以得到ADSW或者DASW。

示例三

輸入

AAAA

輸出

3

說(shuō)明

可以替換后3個(gè)A,得到ASDW。

示例四

輸入

AAAAADDD

輸出

4

解題思路

注意,本題和LC76. 最小覆蓋子串幾乎完全一致。重點(diǎn)在于如何將原問(wèn)題轉(zhuǎn)化為覆蓋子串的問(wèn)題。

題目有兩個(gè)重要條件:

完美走位字符串是指字符串中A、S、D、W四種字符出現(xiàn)次數(shù)相等的字符串

s.length是4的倍數(shù)

對(duì)于長(zhǎng)度為len(s)的原字符串s來(lái)說(shuō),為了使其轉(zhuǎn)變?yōu)橐粋€(gè)完美走位字符串,其中A、S、D、W四種字符出現(xiàn)次數(shù)應(yīng)該均為num = len(s) // 4。

原字符串s中各個(gè)字符出現(xiàn)的次數(shù)可以用哈希表cnt_s = Counter(s)進(jìn)行統(tǒng)計(jì),對(duì)于出現(xiàn)次數(shù)多于num = len(s) // 4的字符ch,應(yīng)該修改cnt_s[ch] - len(s) // 4個(gè)字符為其他出現(xiàn)次數(shù)少于num = len(s) // 4的字符,才能夠使得s變?yōu)橐粋€(gè)完美走位字符串。

以示例四為例,s = "AAAAADDD",字符"A"出現(xiàn)的次數(shù)為5,字符"D"應(yīng)該修改3,而num = len(s) // 4 = 2,需要修改3個(gè)"A"和1個(gè)"D"為剩余兩種字符,才能使得s變?yōu)橥昝雷呶蛔址?。故我們需要找到包?個(gè)"A"和1個(gè)"D"的最小子串。

因此這個(gè)問(wèn)題就轉(zhuǎn)變?yōu)榱耍业礁采wcnt_s[ch] - len(s) // 4個(gè)的字符ch(ch滿足條件cnt_s[ch] > len(s) // 4)的最短子串。需要覆蓋的子串中所出現(xiàn)的字符以及次數(shù),可以用另一個(gè)哈希表cnt_sub儲(chǔ)存。

那么這個(gè)問(wèn)題就和LC76. 最小覆蓋子串完全一致了。上述邏輯整理為代碼即

num=len(s)//4
cnt_s=Counter(s)
cnt_sub={k:v-numfork,vincnt_s.items()ifv>num}

代碼

#題目:2023Q1A-完美走位
#分值:100
#作者:許老師&&吳師兄學(xué)算法
#算法:不定滑窗
#代碼看不懂的地方,請(qǐng)直接在群上提問(wèn)


fromcollectionsimportCounter
frommathimportinf


#定義輔助函數(shù)check()
#用于檢查cnt_sub中的各個(gè)字符是否出現(xiàn)在cnt_win中,
#且cnt_win中的個(gè)數(shù)大于等于cnt_sub
defcheck(cnt_win,cnt_sub):
returnall(cnt_win[k]>=cnt_sub[k]forkincnt_sub)


s=input()
num=len(s)//4
#獲得原字符串中所有字符的出現(xiàn)次數(shù)
cnt_s=Counter(s)
#獲得需要覆蓋的子串的字符以及出現(xiàn)次數(shù)
cnt_sub={k:v-numfork,vincnt_s.items()ifv>num}

#如果cnt_sub長(zhǎng)度為0,說(shuō)明每一種字符出現(xiàn)次數(shù)相等
#s已經(jīng)是一個(gè)完美走位字符串,輸出0
iflen(cnt_sub)==0:
print(0)
#否則要進(jìn)行類似LC76.最小覆蓋子串的不定滑窗過(guò)程
else:
#初始化滑窗對(duì)應(yīng)的哈希表、最小覆蓋的窗口長(zhǎng)度
cnt_win=Counter()
ans=inf
left=0

forright,chinenumerate(s):
# Q1:對(duì)于每一個(gè)右指針right所指的元素ch,做什么操作?
# A1:將其加入哈希表cnt_win的計(jì)數(shù)中
cnt_win[ch]+=1
# Q2:什么時(shí)候要令左指針left右移?在什么條件下left停止右移?【循環(huán)不變量】
# A2:check(cnt_win, cnt_sub)為T(mén)rue,left可以右移以縮小窗口長(zhǎng)度
whilecheck(cnt_win,cnt_sub):
# Q3:什么時(shí)候進(jìn)行ans的更新?
# A3:check(cnt_win, cnt_sub)為T(mén)rue
ans=min(ans,right-left+1)
cnt_win[s[left]]-=1
left+=1

print(ans)

時(shí)空復(fù)雜度

時(shí)間復(fù)雜度:O(N)。僅需一次遍歷整個(gè)字符串s。

空間復(fù)雜度:O(1)。只有4種字符,哈希表所占用空間為常數(shù)級(jí)別空間。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4708

    瀏覽量

    95217
  • 鍵盤(pán)
    +關(guān)注

    關(guān)注

    4

    文章

    866

    瀏覽量

    40619
  • 字符
    +關(guān)注

    關(guān)注

    0

    文章

    236

    瀏覽量

    25563
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4379

    瀏覽量

    64687

原文標(biāo)題:算法面試真題:完美走位

文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【硬件方向】名企面試筆試:大疆創(chuàng)新校園招聘筆試題

    名企面試筆試:大疆創(chuàng)新校園招聘筆試題-硬件 是幾年前的題目,不過(guò)值得參考一下哦 純分享貼,有需要可以直接下載附件獲取完整資料! (如果內(nèi)容有幫助可以關(guān)注、點(diǎn)贊、評(píng)論支持一下哦~)
    發(fā)表于 05-16 17:31

    視頻教程:Java七大外企經(jīng)典面試套路之基礎(chǔ)篇

    多年來(lái)名企在各地的Java筆試、面試經(jīng)驗(yàn),需要的朋友可以看看,作為參考!課程目錄:第1節(jié) String Stringbuffer Stringbuilder 深度解析第2節(jié) 完美
    發(fā)表于 06-14 15:47

    免費(fèi)視頻教程:java經(jīng)典面試題深度解析

    簡(jiǎn)介:精選多年來(lái)名企在各地的Java筆試、面試經(jīng)驗(yàn)課程目錄:第一節(jié) String Stringbuffer Stringbuilder 深度解析第二節(jié) 完美回答
    發(fā)表于 06-15 15:13

    java經(jīng)典面試題深度解析

    教程,需要的朋友可以看看,作為參考!課程簡(jiǎn)介:精選多年來(lái)名企在各地的Java筆試面試經(jīng)驗(yàn)課程目錄:第一節(jié) String Stringbuffer Stringbuilder 深度解析第二節(jié)
    發(fā)表于 06-20 15:16

    硬件經(jīng)典面試100 (附答案)

    學(xué)電人員必備;硬件經(jīng)典面試100;面向電子行業(yè)的面試基礎(chǔ)問(wèn)題,提前進(jìn)入職業(yè)的大門(mén)
    發(fā)表于 10-12 14:28

    藍(lán)橋杯省賽賽代碼總結(jié)

    藍(lán)橋杯省賽賽代碼總結(jié),親測(cè)有效!
    發(fā)表于 07-25 09:10

    大疆創(chuàng)新校園招聘筆試題-硬件

    名企面試筆試:大疆創(chuàng)新校園招聘筆試題-硬件,有需要的可以下載參考
    發(fā)表于 04-29 15:05

    硬件經(jīng)典面試100分享

    學(xué)電人員必備;硬件經(jīng)典面試100;面向電子行業(yè)的面試基礎(chǔ)問(wèn)題,提前進(jìn)入職業(yè)的大門(mén)
    發(fā)表于 09-27 06:23

    程序員面試寶典下載(pdf電子書(shū))

    程序員面試寶典取材于各大IT公司歷年面試(筆試、口試、電話面試、英語(yǔ)面試,以及邏輯
    發(fā)表于 09-19 17:14 ?1818次下載
    程序員<b class='flag-5'>面試</b>寶典下載(pdf電子書(shū))

    2011注電(供配電)基礎(chǔ)(上午)

    2011注電(供配電)基礎(chǔ)(上午)2011注電(供配電)基礎(chǔ)(上午)2011注電(供配電)基礎(chǔ)
    發(fā)表于 02-19 15:34 ?4次下載

    華為HCIE RS面試集錦

    華為HCIE RS面試集錦,華為認(rèn)證必須
    發(fā)表于 05-11 11:16 ?0次下載

    微軟面試100系列

    微軟面試100系列
    發(fā)表于 01-08 14:14 ?0次下載

    Linux面試3道

    關(guān)鍵詞:linux、面試 第一:下面的網(wǎng)絡(luò)協(xié)議中,面向連接的的協(xié)議是( ) A 傳輸控制協(xié)議 B 用戶數(shù)據(jù)報(bào)協(xié)議 C 網(wǎng)際協(xié)議 D 網(wǎng)際控制報(bào)文協(xié)議 第二:. Linux文件權(quán)限一共10
    發(fā)表于 09-23 11:03 ?590次閱讀

    算法類型以及準(zhǔn)備策略

    今天就和大家聊聊大公司的面試環(huán)節(jié)經(jīng)常涉及的算法類型以及準(zhǔn)備策略。 問(wèn)題難度首先大家比較關(guān)心的就是面試時(shí)候出現(xiàn)的算法
    的頭像 發(fā)表于 09-02 10:50 ?1706次閱讀

    新疆大學(xué)信號(hào)與系統(tǒng)2002年

    新疆大學(xué)823信號(hào)與系統(tǒng)2002年-樣板
    發(fā)表于 04-29 15:26 ?0次下載