当前位置:   article > 正文

记大疆笔试犯得一个低级错误(代码已于08.18更正)_大疆30253

大疆30253

大疆的笔试是12道不定项选择+3道编程

不定项选择就不说了

第一道编程问的是规划路线的问题ac55%还是45%,时间关系,没有深究

第二道题是原汁原味的背包问题ac100%

第三道题是给一个纯数字字符串和一个数字n,在这个字符串中去掉n个字符,得到对应数字最小的字符串,字符串的长度是0-10000
然后我写了个憨憨代码ac了27%,也是不出乎意料的会超时。
当时的思路是开辟一个相同的字符数组ret,while(n > 0)里面再套一个for遍历字符串,for里面再维护一个动态的字符数组,长度为n+1,找到字符数组中最小的字符,然后把最小字符之前的字符在ret中置为"K",同时n–,直到n为0。接着遍历ret,不为k的放进StringBuild,最后转为int类型输出。期间在赛码上输入测试用例的时候还输错了把输入输入的部分写到了输出里,花了10来分钟去找是不是scanner读取的问题,最后发现是我写错了用例。

我的天,我在写上面那段话的时候就在想,一个人到底要憨到什么地步,才能写出这样的代码。

然后在考试结束后大概5分钟左右的时候,我恍然大悟,我为什么要那么写?我为什么不直接维护一个list,在n大于0的情况下,和list之前的元素比较,后面的比前面的小,直接删掉不就好了吗?(2020.08.16)

--------------------------------------------------------------------------------分割线-----------------------------------------------------------------------------------------------

今日复查博客,发现代码有错,原因是删掉链表中的元素带来的下标变化问题,在与群友交流后采用了StringBuild直接操作。代码更新,但整体思路未变(2020.08.18)

然后我大概花了十几分钟写出了一个生成10000位纯数字字符串的代码和实现了思路的代码。

    /*public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        int num = 10000;
        Random random = new Random();
        while (num-- > 0) {
            sb.append(random.nextInt(10));
        }
        System.out.println(sb.toString());
    }*/
//下面是随机生成的字符串
    //2725940741180752200437921009059187060512499783009709222655780664115945568672594418844651983592756599755559344163345537077335189653595336007379761664902324144909999426367753267719405800539603454626968347646564895957577865452148572379216490705315853144411098814146095378247237656960034532359916726316607041658187620578146204226563500647741067825088666696474316253653703142685173008307970974903342151063681646100287038676917412658847427515144862722478226613226013364164024241988303956184762581711473107759199085382068539798586186148348826324353646596993368801077880073349712151883719177927021563616529296558319030877206086297499246526982671355740389289008811727266864764015385658185500680342122204976169744763588218638697434078834537495241234562480787319083192136324062715102098487554240873155211512434545732267193082687606366566756108661230595522047338762942996589958419969675480733309769891115447110074881952335589870079396527774651042132494550244336922228795062552143780911667665952973704711342967374159139386848715141470002555047740957516253526184962662313246693612337325254469493666565079017083292990082692459508345592523959150601766128822459802761208540838663499063738891469859238928554441064895718825371884089513215677968784110424016397306853233949463557145905256087484118462224805382988013961617886665043116089898452412149756908982066092106336381897079087736793121037859315711505252709365449454709159628296121448872089860165096862642278336328515646395657080834735008807422840585850026982700159689410716236099122500290468963233700554883409398881432003234445031586926527314956568544230641290146998380784344325867946837318442012338968120814063320103346703893894377817281901995178000042168857659101072455590225987194824849900970184574997910049471247994148338016534328343538271732584859120461935970998196487874796361177396893801808180282525415153326307735665634104592592083564798573594018368292002104460644404198944738297872579273571988851086715379849553172869597852440288127648566914874621281408439507855615208270525531579864277224923504589477457690605289074389603498262166578556085305449051903553517117499590827038671401396232879617484985383584921793890395701027692607332954281470550146446730622944558000227231484178441208149891852318188469010215711160566389026606411464138846830010350585459497107439180412603794496960037170445703287728281853973877188459085373104026698965275710960350135515645641581474997752018924163246107289181483191873238377707712711335673004469054496894649499090136468518130197591918084170223687882749537788035601402293836605465286897167210413811597318823323566786295203490378280794809787703332064720290685147899256122321161096211519510078202940101646888110575351195932799256052109836251014175973865993505249620975112552615853540617784163072025210729038616570878052619886147962074758070228531938890132672250537551800847521282454602371060445369888168541195861959569973924624782874238512473129483262500583051229860226198299196640199674804068065290873267718271692721088653762990571900298380557889794331993489299268875855811959383489762155182602924131429497419040883257393296055816443567372323036113549584320666194504422836804174341322824824512586727110391755379357341019322889172606092372071134715758640287872583477845030902558776610896926842180499196238809675513132000489136304620809775994749056164313667904394959243416558521953541952125305783189420130487566096887266523039514682179088997133009944197291407053972698006348897253951782221888212827112509726225099701578550937967877217021376064239532467420984203191391659742192313372395467144557667431551224567325493369546470994709611822254045058466471935699834612748807785299894546975629206205448361764103082801072259008903015931685712182491127390864811320250652100992755027991515596138220966434197977338353268053367946816383504381019163484151405524912375008460510451865452850144126656667522110827435150951008254057156989324808375462353946663489463147181008653697792519485526603918011723096756304161701297562182978714120354815938874961467835808233648728527167811910481699679797768750765027816673496137984611999928701195701778770178514394213601544021346539258147114458772009501450140318525311547130565646128273346688105866953235333610833362328071217359423980912522996672990007236334509924800584385767939758682487233853828929086365603608714559704949204647427844101279195202503101798419319754413118172930821477504466255472372929823010572037510789916419632159918215794809342869855799819377171739267703284598154489236947658800518654979201061218430068135370171533163439934597749021914541599753829459482943051168398310818136915069695199743587545878081904127663915932874998162078138539121453264322251781650668665058996272663252837512653626783378567903862751204167896312954499830931570639534129050051269514413689091412125222569620003362485821894620656698282320807317452218406139350162200559276236874260194447681394032716339691058523952809021427890917303617976784660922990327648760915550514379294501296344330062353889048275735742474230399841190790811728449051712947967782381475782264427899821642047909842855746070458955045169102312606056570940036711433014880932637323186508244610144077281753993409225490234502993146715325755254349941692025125704471612745023436215580911019261266780635842143210003765828738005345135558836013635871562139614703135258693545890225923549705653333656161594321014574299263878748860778806719499400313655416691776114562243747912823458174107944818044189478131568664240414818843417320171410998215173322108890945769728152496095092571480139672846524427832103311937194201949053201371603717091922225833279241592298710139411120326474903703018568569096665933667125880637855879201411950726622212914134283527345636449730967329946186763271155855710566850150957970997159124080874628628452843049223165282694114418342574093017387357380738375559089621107772318619115752138375788727429384458815518026824926242504975787732023451008206587162081635162126125822902144479328123965904857038533089613566542981403857740277551303243858746399473864022053120117444293743150934377368061071471522459755971970763984690056489589117391399500190382091362720556396378625438814494533532424355611762302663739629740086440900190549272393197175023981549358492008913083025675292753277345793112045949248712269226211933787904032747593015849389319676204635459417780819141395377478954527891804166683939084255765534240717318392434072205257064040023611524569973313589806013194762016173478301091302526564660130815748760496819716135535371645251262083556443176036363899033249328567080008616203523517982846664894879465629334016984940397936393107553872421668559157591639411741984402131479802343059801025850049131544824954052191669017688038682670293089818065217863516628154922058529708930634060923515158373030347467204383582383413094769737582672531347678097235058002548302009037977418577755139118719114212069952888272299318468130885750418706924544102713291805759888048087851517788188599234583258996297585934887664819446622190616345943151759482461915738264525310497764593267184587322961449269687979760370242756704126027996343843990304381279051383195334437215443337041659114899107869852962835699305493252871473032969996649450924283932066842844331089553231873589255517169782379515986554497864652768378384762565036156143704698641211435611254699049266265381006581053286257619690635700155752456328546000335168399226301056287600643919372930193575909691809251692953296458446161779144937042859985067042972275392144962461531091644929035074332429856214996241376318911393943807001479517113548636116615833101381634551217701442916905162599048372816743822942573019662489546457789857265043086371212976799296072103400746334817495395119211980168787011693380505806822313976434884024668275287946544950459940197333358704376817829658991061783871187330727058884212555321058763712652012135959311908642283480034463701216946696557991494282175518578366767417903919022927719107559816519053458045693966187729324639182733013572044490062880278506714962400519614328800656464824220801513051420957098543917686751296046929026600594104735422732129900747841045541619057146901639675246350727234943680715005485559334862782984951271656419729071055224948588497996119938138481413782252056111583074708527182724682717619743038807559990695941059937421086332710547680070138669171911867683817666588643525652251112802747421961788792224453344472995924341398245648588507810222437518266038769887855200874858126044911033892687661059913385638052514078083308096104393916379767646118873191287187754613235032853224055631806891596192506909075439070908601552571455579508194335572776377038317873161765035574283992272164461366983944795585330729191614800892239267994619711490512796275668241031427891341839762006900667142909935335745888956174774971683564363060938536294279655918539935919578022533198557277436797292800677546803609654799950615950684047423640865714702599932562106511645001482894513518403517509058471730589854551668944605151658386285402944401836025425970672194536842209172577121078760505455544299411548874039367582528047468646787938668190760452026727807923436910630613431857895533438485675725941399828658902351576685054117207802990908541919948558907043763954945451099164892864278950557099749103405567712976409917657631775901190451854436922711792860967938661000956843634543297018981265214612411382449397146449538082960683939422879376065999879336627977818701539362775564526799764443798400914672464470963458958091370909915511445777202357710900243995105166592588693799415962866407416482104412885095073445476979365855861107229118272354234243671780284974570121362232292633712771797195065774572902747818217343707981122268769850413222307885963344814179058762068290305299085303820592416902688145062487563298837927082665270583256426663544063571076485445869294132154439815399168386750023766376982794097770587667233344565571514855156158412455335473740399148736065433001735941373241872480469704280500751451107646663118166162756948243130212762000847421396322480780722463644111500949341652195310742328224290445542604249005365486867273
 //我输入的n是4
//4
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String str = sc.nextLine();
            char[] ret = str.toCharArray();
            int num = sc.nextInt();
            LinkedList<Character> list = new LinkedList<>();
            for (int i = 0; i < ret.length; i++) {
                list.add(ret[i]);
            }
            for (int i = 1; i < list.size(); i++) {
                if(list.get(i) < list.get(i - 1) && num > 0) {
                    list.remove(i - 1);
                    num--;
                }
                if(num == 0) {
                    break;
                }
            }
            StringBuilder sb = new StringBuilder();
            for(char c : list) {
            //这里不确定是否要在输出0123的情况下去掉0
                if((sb.length() == 0 && c != '0') || sb.length() != 0) {
                    sb.append(c); 
                }
                
            }
            System.out.println(sb.toString());

        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

!!!!!!!!! 上述代码错误!!!!!!!!!!!!!!
!!!!!!!!! 上述代码错误!!!!!!!!!!!!!!
!!!!!!!!! 上述代码错误!!!!!!!!!!!!!!
!!!!!!!!! 上述代码错误!!!!!!!!!!!!!!
更新的代码附在最后,为了加深印象故不删除错误代码
输出结果演示:
原字符串:27259407411807522004379210。。。。。
输出的串:2254041107522004379210090591。。。。

突出对比效果:

原字符串:27259407411807522004379210。。。。。
输出的串:2_25_40_411_07522004379210090591。。。。

可以完成功能,但是考虑到字符串长度,就不要转为int类型了。

当我自己考完花了10几分钟写出这个代码后,我比我不会写还要难受

--------------------------------------------------------------------------------08.18代码更正如下-------------------------------------------------------------------------------

       public static void main(String[] args) {
           Scanner sc = new Scanner(System.in);
           while (sc.hasNext()) {
               String str = sc.nextLine();
               int num = sc.nextInt();
               if(num >= str.length()) {
                   System.out.println(0);
               }else {
                   StringBuilder sb = new StringBuilder(str);
                   boolean flg;
                   while (num-- > 0) {
                       flg = false;
                       for (int i = 0; i < sb.length() - 1; i++) {
                           if(sb.charAt(i + 1) < sb.charAt(i)) {
                               flg = true;
                               sb.deleteCharAt(i);
                               break;
                           }
                       }
                       if (!flg) {
                           sb.deleteCharAt(sb.length() - 1);
                       }
                   }
                   while (sb.charAt(0) == '0' && sb.length() > 1) {
                       sb.deleteCharAt(0);
                   }
                   System.out.println(sb.toString());
               }
           }
       }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

数据测试:




本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/998537
推荐阅读
相关标签
  

闽ICP备14008679号