109.(5455) 最多 K 次交换相邻数位后得到的最小整数(超出时间限制)(第196场周赛)

题目描述:

给你一个字符串 num 和一个整数 k 。其中,num 表示一个很大的整数,字符串中的每个字符依次对应整数上的各个 数位 。

你可以交换这个整数相邻数位的数字 最多 k 次。

请你返回你能得到的最小整数,并以字符串形式返回。

示例 1:

输入:num = "4321", k = 4
输出:"1342"
解释:4321 通过 4 次交换相邻数位得到最小整数的步骤如上图所示。

示例 2:

输入:num = "100", k = 1
输出:"010"
解释:输出可以包含前导 0 ,但输入保证不会有前导 0 。

示例 3:

输入:num = "36789", k = 1000
输出:"36789"
解释:不需要做任何交换。

示例 4:

输入:num = "22", k = 22
输出:"22"

示例 5:

输入:num = "9438957234785635408", k = 23
输出:"0345989723478563548"

提示:

  • 1 <= num.length <= 30000
  • num 只包含 数字 且不含有 前导 0 
  • 1 <= k <= 10^9

代码:(超出时间限制)

class Solution {
public:
    string minInteger(string num, int k) {
        vector<bool> b(num.length(), false); //标记是否移动过
        char mins = 'a';                     //选择最小的元素
        int loc = num.length();
        string res; //结果
        while (k > 0)
        {
            int j = 0, i = 0;
            //查询k步之内,没有移动过,且最小的元素的索引
            while (j <= k && i < (int)num.length())
            {
                if (!b[i])
                {
                    j++;
                    if (mins > num[i])
                    {
                        mins = num[i];
                        loc = i;
                    }
                }
                i++;
            }
            //还有k步数可以移动,但是所有的元素已经移动过,此时串已经是最小串
            if (j == 0)
                break;
            j = i = 0;
            //最小元素的位置与起始位置之间已经移动过的元素个数
            while (j < loc)
            {
                if (b[j])
                    i++;
                j++;
            }
            //更新剩下的K步数
            k -= (loc - i);
            //将最新移动的元素添加到结果中
            res += num[loc];
            mins = 'a';
            //标记元素已经被移动过
            b[loc] = true;
        }
        //将剩下的串添加到结果中
        for (int i = 0; i < (int)num.length(); i++)
        {
            if (!b[i])
                res += num[i];
        }
        return res;
}

 核心思想:将K步之内最小的元素移动到字符串的首位,移动后K减去移动的步数,剩下的K步继续重复。但是测试用例超时

测试用例:

("858715992185538904922674665946345178173584587361975190264759227358679074804875994637280\
    367990135203927661034806043533309365921316441656325979456369531572321598878694194182907828012745293613811628582178045504327\
    82516742073440109472526699970339886609800750383366078717238316760191501394481258890170341126991012586888137717338667553546709\
    19464603331009130673517018967286442224933538000556598786871094729818211108035823784670843666737560561677998185623241899188420717\
    9859396477430613557474508551699606985153924390138419029473446286426726017641421072641969597293006832974786082871485145774275039\
    46680178019959065693388998926550132805605940680158877806933742224833657753377765719063845159688620618163690515778286975\
    83717093191871719107436409806388862591591446154293105116643776770596077548744517274149480455121660686197388707434701083\
    10167018744498483555035026535032139864586114720966844095135467371922885416211073136058113207350459025428564811413407723\
    603169950563158313644056104787218027417635760179704970207272095831605421428737813368130711492640952800004270138301253162\
    589800937000165991394379339586443233298955651898868972784804827461748274341802042658694531261337565610540912304067834282872\
    115324428237172484867118385263043572202392325130937274597310937871023045172013847485111357768276199441858138941694462046087\
    344590489032758591101395876469586434958978837283681266970801783200979056641387215001550008319627069498692669381624688586705\
    600454533061026567374258339076100663482495581102111851755792702619461685409089500038766553774841701418849591588578400453841\
    494321313355967293245164490896114597934069524179603618963997560050229709463345505610324524931697016496317915813002042208900\
    5633856984400918495987026555192743841350212568034394857863449170329411112539331754105898966985608108594544339511274847221613\
    5599382582233735964569253187813981873688780227977667018427010297239956850769028582721224112262956046971514044786426348254427\
    62410102714507410007938848721096811473538454870547911867332460498153010617477336965207019199481101410983043362700139634762523\
    640931920310984530109892509979191145309540742801706588329548623673793070460761610890236335673235919416114325588725005428996065\
    87168843291771551295498288386761340402063183121785126243287589600603047476630098635987829062299014187518820368245267647940806\
    17124802459394045083227998207434243429707655795304432942726834631965138520142894332446608475962483625260976756694829445970049\
    298654319044024630745005098268850672124565530562827070074796458676730375171314682470766724868623183901898360946868868536335809\
    340731068223385198510770463119676693819847635537280007285371652586968066801532471865879431469697716283275838478391294217884994\
    494226458270052631853580709651181843328163861751730163120543142543110773515519216305521314950037582148851997105197736298017086\
    953052836208337380578019029273417318321019851693400798205857797557321290393386265588376035302686550556224862524242573344787722\
    426523276261868733279114435906019900729192551809546307590113480238099405787216065689011000102306220055764089865169357216871734\
    585907019260943866866461090185600692755197455219174515673895120083989168899824133366193745175725932211785527787053415431214770\
    221196371166982439617260815327366467918955559947498705538959949283333156952013971174393460965203572691266450603704322143699379\
    085687160149545133276623033956201490670668125039339075225312427242591504731030461908584823167472590159209564206153320756458243\
    3808984145539746816202362635062077799321848214902657714184646293929980663410539534328194421200372665621295071108299400999550699\
    284226954312232677522535519065217570828476138395632199304618660030419159054508328621288307271780753624866784121450132407693681\
    605901377944388340526836583144685933046484936303298116519668360710186258315507621342800996695162782091957075299681849730444144\
    992807544219784162873231849662545240300980177103892951048813231368941096674488716956212991003046940638438988947756902816017000\
    852085990313385043168438642967065517261172950335140545654447807604147678664082194746358085849658584470802078124035714424666123\
    593954630251665226929516886687039157933893138658442317946300867935223380545406980404598793636138010613900926061151810637842551\
    890927730085821642458647499490596744507508516249010709967706249684599400128467019868506619087140631881309788201317182402760708\
    7435132128828821732916340944039000016136544931697732377238966615863424568449916502036729360142966211489592934591963388806608876\
    8867971020047968455478575496837148722504919657414312496429386157047572816352197985768962537500321148355306897978400022767945149\
    008156175506676055522079469108526792105280460425939709198105284935481329530418447347968018901751519754278263826382788478907356\
    566139611864626813870511716539399814089447637863820760209091216185465909823010886440617432444485719029064707237211254996453680\
    123144103677763795092646862237195734822323040876250804573802836673655628572091067239162220551836037922591469995302574431197011\
    319133385344821451065851773534884155926552443889267034831902822010711078300083000059691668550331995703629187223522949870066540\
    589792968452541426992184701737704863131769499472196672805142065024003414564070717536149664262972292660238690663451745769823504\
    581250664749821839214014628049017901551715282505305924545562433507799725071426144117542619308627840150884154219904703860435957\
    5824853768459483747845943452292095519446728964300344610127174732098174241268100998538708260347701832430452375584886631904461357\
    2553032725825672248315294972028552848062097827528007723330783883815914362900188235505577152686386223452514236687379191418232119\
    6386020656650050460410863035319884421985485173005496585571681185974484138363198472419785519114919703852085996575761464286613984\
    2808356328158990371194499215094244818517449716035132703970511993970806511983110208079044790006512028092683229897469462341851415\
    3808441759915258811026721351342722318145644583157213121193563444135416013111208727890601422559122920480715642672165177974262051\
    3449225000627938041910597566757776094649490985338754920744760047222473475097052315574780694850471713479975212327774447341847183\
    494957309423263689396123981806435718512710234949962292062492009692867109799013699877007115195748463282240728806563727371130813361\
    795120700619869826032111467036930919312061372216370877402587880877783592463654662503003432622296883889362924436552452980364289865\
    492776248895714004335674876184657642287255898988660249362389491259427407505644685733792624114660017733415598866751950254188935716\
    0339627762433332000877152044154109409985630846953424260000919408933230168072286184387879881383561564287441954606438417372335200632\
    893493037413064651570617167585403639665880521929837634920492430035718724978924896956230284969728013063160977332752746343168147505\
    973597744654533531423130515098924827563047983994152416373478691641067742515253695222392694428968470130469005866733836517007738700\
    3143438157647214635074356766880313977648963092785584467305122516961118993332327365997296595682914126561570171044997706675135398341\
    15168648038972846863497539499050619643973806522587634809542469970933696945353836306695453836093688548035713166682686944447356452833\
    97308514567949317092203875456163943534074391184238045529142178247735037186446047607070218765608270346414513985673229433218659532732\
    03335756200933015345183315735307391353874621930110560453684650176237758072046330565436399866262760754441808789016373149730089315005\
    851782025156053446058238601663457304765782782338595133701612139646771687978582478350932427643469490923522542174941782241425828404159\
    411866967768495539298686211507160543509356299765986253290218980988716827692163675326239174717934116405384925190417669577263478600696\
    521038129036023090820677536213557139562250440287849654033318902863037756368427253784897277196562409669451188319894612688467967588349\
    45966727825509543495748099126834517035737444111904791114999578916840678923185905591791460177371499185049638382382424717463342802788643\
    01182536099971145589840781178020207116157247271011999582918059938557501831385677329235484351383704665959928883383508384270540693443213\
    62547645454958037612771815128535176219633053148555700668726999569939163429112593918375588354268139537130315042042557468204535877547161\
    24900843975190275045109884525709968752578838307725620076624221079764324938046691489600672881511636504858326489308862584344570188139595\
    25002109788483367912490131085945860127773885234179711696981055148650924314948686381836649760764935938698009100293050834121387889182567\
    03778236899291828398592608818304755839396622105720611322967130006508484351222104084224563990082300835114169292255803104716744002908387\
    36933606743149121746662879183859883482774483209093097171253757856149158302804177219338722743002413500826766497411623743721802472719832\
    08068631530013860570165422045061727833598654184629208309488938767821049777687666865472974265780229768368695942964238302272567070157799\
    36586885221873851980550625748883585329893591299690620908705442318638449439881496981143336950226198638014929838566746791475907543813396\
    40652816340621669280726753557776196954171720366971341729626466957458301933865784824777233193291372598691993313451766309376337032632497\
    70361226851535805719265600785038403730770716385494792977569765511617714477996186461175939176676672371378147520",26226098);

输出结果:

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000001111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222222222222222222222233333333333333
33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
33333333333333333333333333333333333333333444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444455555555555555555
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
55555555555555555555555555555555555555555555555555555555555555555555555555555555555566666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666666666666666666677777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777778888888888888
88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
88888888888888888888888888888888888888888888999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999

末尾后记:1、我真是个菜鸡;2、神啊,他们怎么那么厉害,我花了一整个白天,还是超时,神却只用了11分钟;3、神啊,接受我的膜拜吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值