线上简单的一题
127 单词接龙I
题目链接:https://leetcode-cn.com/problems/word-ladder/
思路:一开始想用的是DFS,一个节点一个节点的递推,然后超时了,因为这题深搜就是遍历所有路线,然后找出最小的,因为是一根线一根线的找,所以在穷举完成之前是出不了答案的
然后换了个思路,用BFS,因为BFS是一层一层的遍历的,最先到终止节点的线长度就是最短长度,然后这里有一个剪枝的优化(直接进行还是会超时,而且不知道怎么巧妙保存用过的节点——强行保存会花费大量空间):
把程序的逻辑图画出来,是这样的(图在leetcode题解第二篇里摘得~)
从图中可以看到,如果下层已经出现了上一层有过的单词,那么就不用在考虑这个单词了,因为单词下的结构是一样的,所以即使有路径,也是上一层的更短,所以在遍历的过程中,直接记录所有访问过的节点就好,可以减去大量的枝丫
下面是源代码
source code:
package leetcode; import java.util.ArrayList; import java.util.List; public class LadderLength { private String begin = ""; public int ladderLength(String beginWord, String endWord, List<String> wordList) { if(!wordList.contains(endWord)) return 0; begin = beginWord; int[] flags = new int[wordList.size()]; String[] data = {}; data = wordList.toArray(data); String[] queue = new String[2000]; int rear = 0; int front = 0; ++rear; queue[1] = beginWord; String temp_str; int res = 0; boolean flag = false; while(rear!=front){ int temp_i = rear; res++; while(temp_i!=front){ front = (front+1)%2000; temp_str = queue[front]; for(int i = 0;i<data.length;++i){ if(flags[i]==0&&isLegal(temp_str,data[i])){ flags[i] = 1; // if(!data[i].equals(beginWord)) { rear = (rear + 1) % 2000; queue[rear] = data[i]; // } if(data[i].equals(endWord)) flag = true; } } } if(flag) break; } if(!flag) return 0; return ++res; } /** * used to check whether the str2 is different with str1 at just one character or less * @param str1 * @param str2 * @return */ private boolean isLegal(String str1,String str2){ int count = 0; for(int i = 0;i<str1.length();++i){ if(str1.charAt(i)!=str2.charAt(i)) ++count; if(count>1)return false; } return true; } public static void main(String[] args) { LadderLength main = new LadderLength(); String[] data = {"slit","bunk","wars","ping","viva","wynn","wows","irks","gang","pool","mock","fort","heel", "send","ship","cols","alec","foal","nabs","gaze","giza","mays","dogs","karo","cums","jedi","webb", "lend","mire","jose","catt","grow","toss","magi","leis","bead","kara","hoof","than","ires","baas", "vein","kari","riga","oars","gags","thug","yawn","wive","view","germ","flab","july","tuck","rory", "bean","feed","rhee","jeez","gobs","lath","desk","yoko","cute","zeus","thus","dims","link","dirt", "mara","disc","limy","lewd","maud","duly","elsa","hart","rays","rues","camp","lack","okra","tome", "math","plug","monk","orly","friz","hogs","yoda","poop","tick","plod","cloy","pees","imps","lead", "pope","mall","frey","been","plea","poll","male","teak","soho","glob","bell","mary","hail","scan", "yips","like","mull","kory","odor","byte","kaye","word","honk","asks","slid","hopi","toke","gore", "flew","tins","mown","oise","hall","vega","sing","fool","boat","bobs","lain","soft","hard","rots", "sees","apex","chan","told","woos","unit","scow","gilt","beef","jars","tyre","imus","neon","soap", "dabs","rein","ovid","hose","husk","loll","asia","cope","tail","hazy","clad","lash","sags","moll", "eddy","fuel","lift","flog","land","sigh","saks","sail","hook","visa","tier","maws","roeg","gila", "eyes","noah","hypo","tore","eggs","rove","chap","room","wait","lurk","race","host","dada","lola", "gabs","sobs","joel","keck","axed","mead","gust","laid","ends","oort","nose","peer","kept","abet", "iran","mick","dead","hags","tens","gown","sick","odis","miro","bill","fawn","sumo","kilt","huge", "ores","oran","flag","tost","seth","sift","poet","reds","pips","cape","togo","wale","limn","toll", "ploy","inns","snag","hoes","jerk","flux","fido","zane","arab","gamy","raze","lank","hurt","rail", "hind","hoot","dogy","away","pest","hoed","pose","lose","pole","alva","dino","kind","clan","dips", "soup","veto","edna","damp","gush","amen","wits","pubs","fuzz","cash","pine","trod","gunk","nude", "lost","rite","cory","walt","mica","cart","avow","wind","book","leon","life","bang","draw","leek", "skis","dram","ripe","mine","urea","tiff","over","gale","weir","defy","norm","tull","whiz","gill", "ward","crag","when","mill","firs","sans","flue","reid","ekes","jain","mutt","hems","laps","piss", "pall","rowe","prey","cull","knew","size","wets","hurl","wont","suva","girt","prys","prow","warn", "naps","gong","thru","livy","boar","sade","amok","vice","slat","emir","jade","karl","loyd","cerf", "bess","loss","rums","lats","bode","subs","muss","maim","kits","thin","york","punt","gays","alpo", "aids","drag","eras","mats","pyre","clot","step","oath","lout","wary","carp","hums","tang","pout", "whip","fled","omar","such","kano","jake","stan","loop","fuss","mini","byrd","exit","fizz","lire", "emil","prop","noes","awed","gift","soli","sale","gage","orin","slur","limp","saar","arks","mast", "gnat","port","into","geed","pave","awls","cent","cunt","full","dint","hank","mate","coin","tars", "scud","veer","coax","bops","uris","loom","shod","crib","lids","drys","fish","edit","dick","erna", "else","hahs","alga","moho","wire","fora","tums","ruth","bets","duns","mold","mush","swop","ruby", "bolt","nave","kite","ahem","brad","tern","nips","whew","bait","ooze","gino","yuck","drum","shoe", "lobe","dusk","cult","paws","anew","dado","nook","half","lams","rich","cato","java","kemp","vain", "fees","sham","auks","gish","fire","elam","salt","sour","loth","whit","yogi","shes","scam","yous", "lucy","inez","geld","whig","thee","kelp","loaf","harm","tomb","ever","airs","page","laud","stun", "paid","goop","cobs","judy","grab","doha","crew","item","fogs","tong","blip","vest","bran","wend", "bawl","feel","jets","mixt","tell","dire","devi","milo","deng","yews","weak","mark","doug","fare", "rigs","poke","hies","sian","suez","quip","kens","lass","zips","elva","brat","cosy","teri","hull", "spun","russ","pupa","weed","pulp","main","grim","hone","cord","barf","olav","gaps","rote","wilt", "lars","roll","balm","jana","give","eire","faun","suck","kegs","nita","weer","tush","spry","loge", "nays","heir","dope","roar","peep","nags","ates","bane","seas","sign","fred","they","lien","kiev", "fops","said","lawn","lind","miff","mass","trig","sins","furl","ruin","sent","cray","maya","clog", "puns","silk","axis","grog","jots","dyer","mope","rand","vend","keen","chou","dose","rain","eats", "sped","maui","evan","time","todd","skit","lief","sops","outs","moot","faze","biro","gook","fill", "oval","skew","veil","born","slob","hyde","twin","eloy","beat","ergs","sure","kobe","eggo","hens", "jive","flax","mons","dunk","yest","begs","dial","lodz","burp","pile","much","dock","rene","sago", "racy","have","yalu","glow","move","peps","hods","kins","salk","hand","cons","dare","myra","sega", "type","mari","pelt","hula","gulf","jugs","flay","fest","spat","toms","zeno","taps","deny","swag", "afro","baud","jabs","smut","egos","lara","toes","song","fray","luis","brut","olen","mere","ruff", "slum","glad","buds","silt","rued","gelt","hive","teem","ides","sink","ands","wisp","omen","lyre", "yuks","curb","loam","darn","liar","pugs","pane","carl","sang","scar","zeds","claw","berg","hits", "mile","lite","khan","erik","slug","loon","dena","ruse","talk","tusk","gaol","tads","beds","sock", "howe","gave","snob","ahab","part","meir","jell","stir","tels","spit","hash","omit","jinx","lyra", "puck","laue","beep","eros","owed","cede","brew","slue","mitt","jest","lynx","wads","gena","dank", "volt","gray","pony","veld","bask","fens","argo","work","taxi","afar","boon","lube","pass","lazy", "mist","blot","mach","poky","rams","sits","rend","dome","pray","duck","hers","lure","keep","gory", "chat","runt","jams","lays","posy","bats","hoff","rock","keri","raul","yves","lama","ramp","vote", "jody","pock","gist","sass","iago","coos","rank","lowe","vows","koch","taco","jinn","juno","rape", "band","aces","goal","huck","lila","tuft","swan","blab","leda","gems","hide","tack","porn","scum", "frat","plum","duds","shad","arms","pare","chin","gain","knee","foot","line","dove","vera","jays", "fund","reno","skid","boys","corn","gwyn","sash","weld","ruiz","dior","jess","leaf","pars","cote", "zing","scat","nice","dart","only","owls","hike","trey","whys","ding","klan","ross","barb","ants", "lean","dopy","hock","tour","grip","aldo","whim","prom","rear","dins","duff","dell","loch","lava", "sung","yank","thar","curl","venn","blow","pomp","heat","trap","dali","nets","seen","gash","twig", "dads","emmy","rhea","navy","haws","mite","bows","alas","ives","play","soon","doll","chum","ajar", "foam","call","puke","kris","wily","came","ales","reef","raid","diet","prod","prut","loot","soar", "coed","celt","seam","dray","lump","jags","nods","sole","kink","peso","howl","cost","tsar","uric", "sore","woes","sewn","sake","cask","caps","burl","tame","bulk","neva","from","meet","webs","spar", "fuck","buoy","wept","west","dual","pica","sold","seed","gads","riff","neck","deed","rudy","drop", "vale","flit","romp","peak","jape","jews","fain","dens","hugo","elba","mink","town","clam","feud", "fern","dung","newt","mime","deem","inti","gigs","sosa","lope","lard","cara","smug","lego","flex", "doth","paar","moon","wren","tale","kant","eels","muck","toga","zens","lops","duet","coil","gall", "teal","glib","muir","ails","boer","them","rake","conn","neat","frog","trip","coma","must","mono", "lira","craw","sled","wear","toby","reel","hips","nate","pump","mont","died","moss","lair","jibe", "oils","pied","hobs","cads","haze","muse","cogs","figs","cues","roes","whet","boru","cozy","amos", "tans","news","hake","cots","boas","tutu","wavy","pipe","typo","albs","boom","dyke","wail","woke", "ware","rita","fail","slab","owes","jane","rack","hell","lags","mend","mask","hume","wane","acne", "team","holy","runs","exes","dole","trim","zola","trek","puma","wacs","veep","yaps","sums","lush", "tubs","most","witt","bong","rule","hear","awry","sots","nils","bash","gasp","inch","pens","fies", "juts","pate","vine","zulu","this","bare","veal","josh","reek","ours","cowl","club","farm","teat", "coat","dish","fore","weft","exam","vlad","floe","beak","lane","ella","warp","goth","ming","pits", "rent","tito","wish","amps","says","hawk","ways","punk","nark","cagy","east","paul","bose","solo", "teed","text","hews","snip","lips","emit","orgy","icon","tuna","soul","kurd","clod","calk","aunt", "bake","copy","acid","duse","kiln","spec","fans","bani","irma","pads","batu","logo","pack","oder", "atop","funk","gide","bede","bibs","taut","guns","dana","puff","lyme","flat","lake","june","sets", "gull","hops","earn","clip","fell","kama","seal","diaz","cite","chew","cuba","bury","yard","bank", "byes","apia","cree","nosh","judo","walk","tape","taro","boot","cods","lade","cong","deft","slim", "jeri","rile","park","aeon","fact","slow","goff","cane","earp","tart","does","acts","hope","cant", "buts","shin","dude","ergo","mode","gene","lept","chen","beta","eden","pang","saab","fang","whir", "cove","perk","fads","rugs","herb","putt","nous","vane","corm","stay","bids","vela","roof","isms", "sics","gone","swum","wiry","cram","rink","pert","heap","sikh","dais","cell","peel","nuke","buss", "rasp","none","slut","bent","dams","serb","dork","bays","kale","cora","wake","welt","rind","trot", "sloe","pity","rout","eves","fats","furs","pogo","beth","hued","edam","iamb","glee","lute","keel", "airy","easy","tire","rube","bogy","sine","chop","rood","elbe","mike","garb","jill","gaul","chit", "dons","bars","ride","beck","toad","make","head","suds","pike","snot","swat","peed","same","gaza", "lent","gait","gael","elks","hang","nerf","rosy","shut","glop","pain","dion","deaf","hero","doer", "wost","wage","wash","pats","narc","ions","dice","quay","vied","eons","case","pour","urns","reva", "rags","aden","bone","rang","aura","iraq","toot","rome","hals","megs","pond","john","yeps","pawl", "warm","bird","tint","jowl","gibe","come","hold","pail","wipe","bike","rips","eery","kent","hims", "inks","fink","mott","ices","macy","serf","keys","tarp","cops","sods","feet","tear","benz","buys", "colo","boil","sews","enos","watt","pull","brag","cork","save","mint","feat","jamb","rubs","roxy", "toys","nosy","yowl","tamp","lobs","foul","doom","sown","pigs","hemp","fame","boor","cube","tops", "loco","lads","eyre","alta","aged","flop","pram","lesa","sawn","plow","aral","load","lied","pled", "boob","bert","rows","zits","rick","hint","dido","fist","marc","wuss","node","smog","nora","shim", "glut","bale","perl","what","tort","meek","brie","bind","cake","psst","dour","jove","tree","chip", "stud","thou","mobs","sows","opts","diva","perm","wise","cuds","sols","alan","mild","pure","gail", "wins","offs","nile","yelp","minn","tors","tran","homy","sadr","erse","nero","scab","finn","mich", "turd","then","poem","noun","oxus","brow","door","saws","eben","wart","wand","rosa","left","lina", "cabs","rapt","olin","suet","kalb","mans","dawn","riel","temp","chug","peal","drew","null","hath", "many","took","fond","gate","sate","leak","zany","vans","mart","hess","home","long","dirk","bile", "lace","moog","axes","zone","fork","duct","rico","rife","deep","tiny","hugh","bilk","waft","swig", "pans","with","kern","busy","film","lulu","king","lord","veda","tray","legs","soot","ells","wasp", "hunt","earl","ouch","diem","yell","pegs","blvd","polk","soda","zorn","liza","slop","week","kill", "rusk","eric","sump","haul","rims","crop","blob","face","bins","read","care","pele","ritz","beau", "golf","drip","dike","stab","jibs","hove","junk","hoax","tats","fief","quad","peat","ream","hats", "root","flak","grit","clap","pugh","bosh","lock","mute","crow","iced","lisa","bela","fems","oxes", "vies","gybe","huff","bull","cuss","sunk","pups","fobs","turf","sect","atom","debt","sane","writ", "anon","mayo","aria","seer","thor","brim","gawk","jack","jazz","menu","yolk","surf","libs","lets", "bans","toil","open","aced","poor","mess","wham","fran","gina","dote","love","mood","pale","reps", "ines","shot","alar","twit","site","dill","yoga","sear","vamp","abel","lieu","cuff","orbs","rose", "tank","gape","guam","adar","vole","your","dean","dear","hebe","crab","hump","mole","vase","rode", "dash","sera","balk","lela","inca","gaea","bush","loud","pies","aide","blew","mien","side","kerr", "ring","tess","prep","rant","lugs","hobo","joke","odds","yule","aida","true","pone","lode","nona", "weep","coda","elmo","skim","wink","bras","pier","bung","pets","tabs","ryan","jock","body","sofa", "joey","zion","mace","kick","vile","leno","bali","fart","that","redo","ills","jogs","pent","drub", "slaw","tide","lena","seep","gyps","wave","amid","fear","ties","flan","wimp","kali","shun","crap", "sage","rune","logs","cain","digs","abut","obit","paps","rids","fair","hack","huns","road","caws", "curt","jute","fisk","fowl","duty","holt","miss","rude","vito","baal","ural","mann","mind","belt", "clem","last","musk","roam","abed","days","bore","fuze","fall","pict","dump","dies","fiat","vent", "pork","eyed","docs","rive","spas","rope","ariz","tout","game","jump","blur","anti","lisp","turn", "san0","food","moos","hoop","saul","arch","fury","rise","diss","hubs","burs","grid","ilks","suns", "flea","soil","lung","want","nola","fins","thud","kidd","juan","heps","nape","rash","burt","bump", "tots","brit","mums","bole","shah","tees","skip","limb","umps","ache","arcs","raft","halo","luce", "bahs","leta","conk","duos","siva","went","peek","sulk","reap","free","dubs","lang","toto","hasp", "ball","rats","nair","myst","wang","snug","nash","laos","ante","opal","tina","pore","bite","haas", "myth","yugo","foci","dent","bade","pear","mods","auto","shop","etch","lyly","curs","aron","slew", "tyro","sack","wade","clio","gyro","butt","icky","char","itch","halt","gals","yang","tend","pact", "bees","suit","puny","hows","nina","brno","oops","lick","sons","kilo","bust","nome","mona","dull", "join","hour","papa","stag","bern","wove","lull","slip","laze","roil","alto","bath","buck","alma", "anus","evil","dumb","oreo","rare","near","cure","isis","hill","kyle","pace","comb","nits","flip", "clop","mort","thea","wall","kiel","judd","coop","dave","very","amie","blah","flub","talc","bold", "fogy","idea","prof","horn","shoo","aped","pins","helm","wees","beer","womb","clue","alba","aloe", "fine","bard","limo","shaw","pint","swim","dust","indy","hale","cats","troy","wens","luke","vern", "deli","both","brig","daub","sara","sued","bier","noel","olga","dupe","look","pisa","knox","murk", "dame","matt","gold","jame","toge","luck","peck","tass","calf","pill","wore","wadi","thur","parr", "maul","tzar","ones","lees","dark","fake","bast","zoom","here","moro","wine","bums","cows","jean", "palm","fume","plop","help","tuba","leap","cans","back","avid","lice","lust","polo","dory","stew", "kate","rama","coke","bled","mugs","ajax","arts","drug","pena","cody","hole","sean","deck","guts", "kong","bate","pitt","como","lyle","siam","rook","baby","jigs","bret","bark","lori","reba","sups", "made","buzz","gnaw","alps","clay","post","viol","dina","card","lana","doff","yups","tons","live", "kids","pair","yawl","name","oven","sirs","gyms","prig","down","leos","noon","nibs","cook","safe", "cobb","raja","awes","sari","nerd","fold","lots","pete","deal","bias","zeal","girl","rage","cool", "gout","whey","soak","thaw","bear","wing","nagy","well","oink","sven","kurt","etna","held","wood", "high","feta","twee","ford","cave","knot","tory","ibis","yaks","vets","foxy","sank","cone","pius", "tall","seem","wool","flap","gird","lore","coot","mewl","sere","real","puts","sell","nuts","foil", "lilt","saga","heft","dyed","goat","spew","daze","frye","adds","glen","tojo","pixy","gobi","stop", "tile","hiss","shed","hahn","baku","ahas","sill","swap","also","carr","manx","lime","debs","moat", "eked","bola","pods","coon","lacy","tube","minx","buff","pres","clew","gaff","flee","burn","whom", "cola","fret","purl","wick","wigs","donn","guys","toni","oxen","wite","vial","spam","huts","vats", "lima","core","eula","thad","peon","erie","oats","boyd","cued","olaf","tams","secs","urey","wile", "penn","bred","rill","vary","sues","mail","feds","aves","code","beam","reed","neil","hark","pols", "gris","gods","mesa","test","coup","heed","dora","hied","tune","doze","pews","oaks","bloc","tips", "maid","goof","four","woof","silo","bray","zest","kiss","yong","file","hilt","iris","tuns","lily", "ears","pant","jury","taft","data","gild","pick","kook","colt","bohr","anal","asps","babe","bach", "mash","biko","bowl","huey","jilt","goes","guff","bend","nike","tami","gosh","tike","gees","urge", "path","bony","jude","lynn","lois","teas","dunn","elul","bonn","moms","bugs","slay","yeah","loan", "hulk","lows","damn","nell","jung","avis","mane","waco","loin","knob","tyke","anna","hire","luau", "tidy","nuns","pots","quid","exec","hans","hera","hush","shag","scot","moan","wald","ursa","lorn", "hunk","loft","yore","alum","mows","slog","emma","spud","rice","worn","erma","need","bags","lark", "kirk","pooh","dyes","area","dime","luvs","foch","refs","cast","alit","tugs","even","role","toed", "caph","nigh","sony","bide","robs","folk","daft","past","blue","flaw","sana","fits","barr","riot", "dots","lamp","cock","fibs","harp","tent","hate","mali","togs","gear","tues","bass","pros","numb", "emus","hare","fate","wife","mean","pink","dune","ares","dine","oily","tony","czar","spay","push", "glum","till","moth","glue","dive","scad","pops","woks","andy","leah","cusp","hair","alex","vibe", "bulb","boll","firm","joys","tara","cole","levy","owen","chow","rump","jail","lapp","beet","slap", "kith","more","maps","bond","hick","opus","rust","wist","shat","phil","snow","lott","lora","cary", "mote","rift","oust","klee","goad","pith","heep","lupe","ivan","mimi","bald","fuse","cuts","lens", "leer","eyry","know","razz","tare","pals","geek","greg","teen","clef","wags","weal","each","haft", "nova","waif","rate","katy","yale","dale","leas","axum","quiz","pawn","fend","capt","laws","city", "chad","coal","nail","zaps","sort","loci","less","spur","note","foes","fags","gulp","snap","bogs", "wrap","dane","melt","ease","felt","shea","calm","star","swam","aery","year","plan","odin","curd", "mira","mops","shit","davy","apes","inky","hues","lome","bits","vila","show","best","mice","gins", "next","roan","ymir","mars","oman","wild","heal","plus","erin","rave","robe","fast","hutu","aver", "jodi","alms","yams","zero","revs","wean","chic","self","jeep","jobs","waxy","duel","seek","spot", "raps","pimp","adan","slam","tool","morn","futz","ewes","errs","knit","rung","kans","muff","huhs", "tows","lest","meal","azov","gnus","agar","sips","sway","otis","tone","tate","epic","trio","tics", "fade","lear","owns","robt","weds","five","lyon","terr","arno","mama","grey","disk","sept","sire", "bart","saps","whoa","turk","stow","pyle","joni","zinc","negs","task","leif","ribs","malt","nine", "bunt","grin","dona","nope","hams","some","molt","smit","sacs","joan","slav","lady","base","heck", "list","take","herd","will","nubs","burg","hugs","peru","coif","zoos","nick","idol","levi","grub", "roth","adam","elma","tags","tote","yaws","cali","mete","lula","cubs","prim","luna","jolt","span", "pita","dodo","puss","deer","term","dolt","goon","gary","yarn","aims","just","rena","tine","cyst", "meld","loki","wong","were","hung","maze","arid","cars","wolf","marx","faye","eave","raga","flow", "neal","lone","anne","cage","tied","tilt","soto","opel","date","buns","dorm","kane","akin","ewer", "drab","thai","jeer","grad","berm","rods","saki","grus","vast","late","lint","mule","risk","labs", "snit","gala","find","spin","ired","slot","oafs","lies","mews","wino","milk","bout","onus","tram", "jaws","peas","cleo","seat","gums","cold","vang","dewy","hood","rush","mack","yuan","odes","boos", "jami","mare","plot","swab","borg","hays","form","mesh","mani","fife","good","gram","lion","myna", "moor","skin","posh","burr","rime","done","ruts","pays","stem","ting","arty","slag","iron","ayes", "stub","oral","gets","chid","yens","snub","ages","wide","bail","verb","lamb","bomb","army","yoke", "gels","tits","bork","mils","nary","barn","hype","odom","avon","hewn","rios","cams","tact","boss", "oleo","duke","eris","gwen","elms","deon","sims","quit","nest","font","dues","yeas","zeta","bevy", "gent","torn","cups","worm","baum","axon","purr","vise","grew","govs","meat","chef","rest","lame"}; List<String> test = new ArrayList<>(); for (String each : data) { test.add(each); } System.out.println(main.ladderLength( "sand","acne",test)); } }
很长的那个字符串是提交过程倒数第二个测试用例,说到这里就比较搞笑了,其实这个逻辑想出来之后,我WA了一次,想了两三个小时,反复的找帖子看,去分析逻辑,发现也没错啊,最后,精彩之处来了,我把我的队列扩了下容,变成了10000,就AC了……。感情我花了两三个小时,就是因为循环队列的数据被覆盖了/黑脸,人都傻了
还好扩容之后AC了,不然真的是要放弃了,以后如果工作上有用到,还是用自动扩容的队列,不然很容易出问题(这个问题还很难找,明明逻辑没错/黑脸)
下面就是需要记录路径的双胞胎题了
题目链接:https://leetcode-cn.com/problems/word-ladder-ii/
思路:框架依然套用126框架,一模一样,不需要改,但是因为要记录结点,所以需要额外的嵌套列表来保存每一层遍历的结果,这样到了底层,才能进行回溯,另外,flags数组需要在每一层都运行完之后再统一将新加入的一层标记访问,否则会有情况获取不到
下面上源代码:
source code:
package leetcode; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则: * * 每次转换只能改变一个字母。 * 转换过程中的中间单词必须是字典中的单词。 * 说明: * * 如果不存在这样的转换序列,返回一个空列表。 * 所有单词具有相同的长度。 * 所有单词只由小写字母组成。 * 字典中不存在重复的单词。 * 你可以假设 beginWord 和 endWord 是非空的,且二者不相同。 * */ /** * DFS strategy is failure ,the right strategy maybe is the BFS * the DFS is random,but the BFS will find the shortest path and stop then */ public class FindLadders{ class k_v{ String content; int index;//表示父节点在上一层的位置 int index_in_data; } public List<List<String>> findLadders(String beginWord, String endWord, List<String> wordList) { List<List<String>> res = new ArrayList<>(); if(!wordList.contains(endWord)) return res; List<List<k_v>> visited_buffer = new ArrayList<>(); int[] flags = new int[wordList.size()]; String[] data = {}; data = wordList.toArray(data); String[] queue = new String[7000]; int rear = 0; int front = 0; ++rear; queue[1] = beginWord; String temp_str; List<k_v> ss = new ArrayList<>(); k_v temp_d = new k_v(); temp_d.content = beginWord; temp_d.index = 0; ss.add(temp_d); visited_buffer.add(ss); boolean flag = false; while(rear!=front){ int temp_i = rear; List<k_v> buffer = new ArrayList<>(); int index = 0; while(temp_i!=front){ // System.out.println(rear+" "+front); front = (front+1)%7000; temp_str = queue[front]; for(int i = 0;i<data.length;++i){ if(flags[i]==0&&isLegal(temp_str,data[i])){ // flags[i] = 1; rear = (rear + 1) % 7000; queue[rear] = data[i]; k_v temp_ss = new k_v(); temp_ss.content = data[i]; temp_ss.index = index; temp_ss.index_in_data = i; buffer.add(temp_ss);//加入每一层的缓冲列表 if(data[i].equals(endWord)) {//说明已经到达底层 // System.out.println("此处已运行"); flag = true; ArrayList<String> subRes = new ArrayList<>(); subRes.add(data[i]); int temp_int = index; for(int j = visited_buffer.size()-1;j>=0;--j){//循环向上提取元素 subRes.add(visited_buffer.get(j).get(temp_int).content); temp_int = visited_buffer.get(j).get(temp_int).index; } Collections.reverse(subRes); res.add(subRes); // flags[i] = 0; } } } ++index; } if(flag) break; // Util.util.prinout(flags); // Util.util.prinout(flags); visited_buffer.add(buffer); for (k_v each : visited_buffer.get(visited_buffer.size() - 1)) { flags[each.index_in_data] = 1; } // for (List<k_v> each : visited_buffer) { // for (k_v k_v : each) { // System.out.print(k_v.content); // } // System.out.println(); // } } if(!flag) return res; return res; } /** * used to check whether the str2 is different with str1 at just one character or less * @param str1 * @param str2 * @return */ private boolean isLegal(String str1,String str2){ int count = 0; for(int i = 0;i<str1.length();++i){ if(str1.charAt(i)!=str2.charAt(i)) ++count; if(count>1)return false; } if(count==0)return false; return true; } public static void main(String[] args) { String[] data = {"slit","bunk","wars","ping","viva","wynn","wows","irks","gang","pool","mock","fort","heel", "send","ship","cols","alec","foal","nabs","gaze","giza","mays","dogs","karo","cums","jedi","webb", "lend","mire","jose","catt","grow","toss","magi","leis","bead","kara","hoof","than","ires","baas", "vein","kari","riga","oars","gags","thug","yawn","wive","view","germ","flab","july","tuck","rory", "bean","feed","rhee","jeez","gobs","lath","desk","yoko","cute","zeus","thus","dims","link","dirt", "mara","disc","limy","lewd","maud","duly","elsa","hart","rays","rues","camp","lack","okra","tome", "math","plug","monk","orly","friz","hogs","yoda","poop","tick","plod","cloy","pees","imps","lead", "pope","mall","frey","been","plea","poll","male","teak","soho","glob","bell","mary","hail","scan", "yips","like","mull","kory","odor","byte","kaye","word","honk","asks","slid","hopi","toke","gore", "flew","tins","mown","oise","hall","vega","sing","fool","boat","bobs","lain","soft","hard","rots", "sees","apex","chan","told","woos","unit","scow","gilt","beef","jars","tyre","imus","neon","soap", "dabs","rein","ovid","hose","husk","loll","asia","cope","tail","hazy","clad","lash","sags","moll", "eddy","fuel","lift","flog","land","sigh","saks","sail","hook","visa","tier","maws","roeg","gila", "eyes","noah","hypo","tore","eggs","rove","chap","room","wait","lurk","race","host","dada","lola", "gabs","sobs","joel","keck","axed","mead","gust","laid","ends","oort","nose","peer","kept","abet", "iran","mick","dead","hags","tens","gown","sick","odis","miro","bill","fawn","sumo","kilt","huge", "ores","oran","flag","tost","seth","sift","poet","reds","pips","cape","togo","wale","limn","toll", "ploy","inns","snag","hoes","jerk","flux","fido","zane","arab","gamy","raze","lank","hurt","rail", "hind","hoot","dogy","away","pest","hoed","pose","lose","pole","alva","dino","kind","clan","dips", "soup","veto","edna","damp","gush","amen","wits","pubs","fuzz","cash","pine","trod","gunk","nude", "lost","rite","cory","walt","mica","cart","avow","wind","book","leon","life","bang","draw","leek", "skis","dram","ripe","mine","urea","tiff","over","gale","weir","defy","norm","tull","whiz","gill", "ward","crag","when","mill","firs","sans","flue","reid","ekes","jain","mutt","hems","laps","piss", "pall","rowe","prey","cull","knew","size","wets","hurl","wont","suva","girt","prys","prow","warn", "naps","gong","thru","livy","boar","sade","amok","vice","slat","emir","jade","karl","loyd","cerf", "bess","loss","rums","lats","bode","subs","muss","maim","kits","thin","york","punt","gays","alpo", "aids","drag","eras","mats","pyre","clot","step","oath","lout","wary","carp","hums","tang","pout", "whip","fled","omar","such","kano","jake","stan","loop","fuss","mini","byrd","exit","fizz","lire", "emil","prop","noes","awed","gift","soli","sale","gage","orin","slur","limp","saar","arks","mast", "gnat","port","into","geed","pave","awls","cent","cunt","full","dint","hank","mate","coin","tars", "scud","veer","coax","bops","uris","loom","shod","crib","lids","drys","fish","edit","dick","erna", "else","hahs","alga","moho","wire","fora","tums","ruth","bets","duns","mold","mush","swop","ruby", "bolt","nave","kite","ahem","brad","tern","nips","whew","bait","ooze","gino","yuck","drum","shoe", "lobe","dusk","cult","paws","anew","dado","nook","half","lams","rich","cato","java","kemp","vain", "fees","sham","auks","gish","fire","elam","salt","sour","loth","whit","yogi","shes","scam","yous", "lucy","inez","geld","whig","thee","kelp","loaf","harm","tomb","ever","airs","page","laud","stun", "paid","goop","cobs","judy","grab","doha","crew","item","fogs","tong","blip","vest","bran","wend", "bawl","feel","jets","mixt","tell","dire","devi","milo","deng","yews","weak","mark","doug","fare", "rigs","poke","hies","sian","suez","quip","kens","lass","zips","elva","brat","cosy","teri","hull", "spun","russ","pupa","weed","pulp","main","grim","hone","cord","barf","olav","gaps","rote","wilt", "lars","roll","balm","jana","give","eire","faun","suck","kegs","nita","weer","tush","spry","loge", "nays","heir","dope","roar","peep","nags","ates","bane","seas","sign","fred","they","lien","kiev", "fops","said","lawn","lind","miff","mass","trig","sins","furl","ruin","sent","cray","maya","clog", "puns","silk","axis","grog","jots","dyer","mope","rand","vend","keen","chou","dose","rain","eats", "sped","maui","evan","time","todd","skit","lief","sops","outs","moot","faze","biro","gook","fill", "oval","skew","veil","born","slob","hyde","twin","eloy","beat","ergs","sure","kobe","eggo","hens", "jive","flax","mons","dunk","yest","begs","dial","lodz","burp","pile","much","dock","rene","sago", "racy","have","yalu","glow","move","peps","hods","kins","salk","hand","cons","dare","myra","sega", "type","mari","pelt","hula","gulf","jugs","flay","fest","spat","toms","zeno","taps","deny","swag", "afro","baud","jabs","smut","egos","lara","toes","song","fray","luis","brut","olen","mere","ruff", "slum","glad","buds","silt","rued","gelt","hive","teem","ides","sink","ands","wisp","omen","lyre", "yuks","curb","loam","darn","liar","pugs","pane","carl","sang","scar","zeds","claw","berg","hits", "mile","lite","khan","erik","slug","loon","dena","ruse","talk","tusk","gaol","tads","beds","sock", "howe","gave","snob","ahab","part","meir","jell","stir","tels","spit","hash","omit","jinx","lyra", "puck","laue","beep","eros","owed","cede","brew","slue","mitt","jest","lynx","wads","gena","dank", "volt","gray","pony","veld","bask","fens","argo","work","taxi","afar","boon","lube","pass","lazy", "mist","blot","mach","poky","rams","sits","rend","dome","pray","duck","hers","lure","keep","gory", "chat","runt","jams","lays","posy","bats","hoff","rock","keri","raul","yves","lama","ramp","vote", "jody","pock","gist","sass","iago","coos","rank","lowe","vows","koch","taco","jinn","juno","rape", "band","aces","goal","huck","lila","tuft","swan","blab","leda","gems","hide","tack","porn","scum", "frat","plum","duds","shad","arms","pare","chin","gain","knee","foot","line","dove","vera","jays", "fund","reno","skid","boys","corn","gwyn","sash","weld","ruiz","dior","jess","leaf","pars","cote", "zing","scat","nice","dart","only","owls","hike","trey","whys","ding","klan","ross","barb","ants", "lean","dopy","hock","tour","grip","aldo","whim","prom","rear","dins","duff","dell","loch","lava", "sung","yank","thar","curl","venn","blow","pomp","heat","trap","dali","nets","seen","gash","twig", "dads","emmy","rhea","navy","haws","mite","bows","alas","ives","play","soon","doll","chum","ajar", "foam","call","puke","kris","wily","came","ales","reef","raid","diet","prod","prut","loot","soar", "coed","celt","seam","dray","lump","jags","nods","sole","kink","peso","howl","cost","tsar","uric", "sore","woes","sewn","sake","cask","caps","burl","tame","bulk","neva","from","meet","webs","spar", "fuck","buoy","wept","west","dual","pica","sold","seed","gads","riff","neck","deed","rudy","drop", "vale","flit","romp","peak","jape","jews","fain","dens","hugo","elba","mink","town","clam","feud", "fern","dung","newt","mime","deem","inti","gigs","sosa","lope","lard","cara","smug","lego","flex", "doth","paar","moon","wren","tale","kant","eels","muck","toga","zens","lops","duet","coil","gall", "teal","glib","muir","ails","boer","them","rake","conn","neat","frog","trip","coma","must","mono", "lira","craw","sled","wear","toby","reel","hips","nate","pump","mont","died","moss","lair","jibe", "oils","pied","hobs","cads","haze","muse","cogs","figs","cues","roes","whet","boru","cozy","amos", "tans","news","hake","cots","boas","tutu","wavy","pipe","typo","albs","boom","dyke","wail","woke", "ware","rita","fail","slab","owes","jane","rack","hell","lags","mend","mask","hume","wane","acne", "team","holy","runs","exes","dole","trim","zola","trek","puma","wacs","veep","yaps","sums","lush", "tubs","most","witt","bong","rule","hear","awry","sots","nils","bash","gasp","inch","pens","fies", "juts","pate","vine","zulu","this","bare","veal","josh","reek","ours","cowl","club","farm","teat", "coat","dish","fore","weft","exam","vlad","floe","beak","lane","ella","warp","goth","ming","pits", "rent","tito","wish","amps","says","hawk","ways","punk","nark","cagy","east","paul","bose","solo", "teed","text","hews","snip","lips","emit","orgy","icon","tuna","soul","kurd","clod","calk","aunt", "bake","copy","acid","duse","kiln","spec","fans","bani","irma","pads","batu","logo","pack","oder", "atop","funk","gide","bede","bibs","taut","guns","dana","puff","lyme","flat","lake","june","sets", "gull","hops","earn","clip","fell","kama","seal","diaz","cite","chew","cuba","bury","yard","bank", "byes","apia","cree","nosh","judo","walk","tape","taro","boot","cods","lade","cong","deft","slim", "jeri","rile","park","aeon","fact","slow","goff","cane","earp","tart","does","acts","hope","cant", "buts","shin","dude","ergo","mode","gene","lept","chen","beta","eden","pang","saab","fang","whir", "cove","perk","fads","rugs","herb","putt","nous","vane","corm","stay","bids","vela","roof","isms", "sics","gone","swum","wiry","cram","rink","pert","heap","sikh","dais","cell","peel","nuke","buss", "rasp","none","slut","bent","dams","serb","dork","bays","kale","cora","wake","welt","rind","trot", "sloe","pity","rout","eves","fats","furs","pogo","beth","hued","edam","iamb","glee","lute","keel", "airy","easy","tire","rube","bogy","sine","chop","rood","elbe","mike","garb","jill","gaul","chit", "dons","bars","ride","beck","toad","make","head","suds","pike","snot","swat","peed","same","gaza", "lent","gait","gael","elks","hang","nerf","rosy","shut","glop","pain","dion","deaf","hero","doer", "wost","wage","wash","pats","narc","ions","dice","quay","vied","eons","case","pour","urns","reva", "rags","aden","bone","rang","aura","iraq","toot","rome","hals","megs","pond","john","yeps","pawl", "warm","bird","tint","jowl","gibe","come","hold","pail","wipe","bike","rips","eery","kent","hims", "inks","fink","mott","ices","macy","serf","keys","tarp","cops","sods","feet","tear","benz","buys", "colo","boil","sews","enos","watt","pull","brag","cork","save","mint","feat","jamb","rubs","roxy", "toys","nosy","yowl","tamp","lobs","foul","doom","sown","pigs","hemp","fame","boor","cube","tops", "loco","lads","eyre","alta","aged","flop","pram","lesa","sawn","plow","aral","load","lied","pled", "boob","bert","rows","zits","rick","hint","dido","fist","marc","wuss","node","smog","nora","shim", "glut","bale","perl","what","tort","meek","brie","bind","cake","psst","dour","jove","tree","chip", "stud","thou","mobs","sows","opts","diva","perm","wise","cuds","sols","alan","mild","pure","gail", "wins","offs","nile","yelp","minn","tors","tran","homy","sadr","erse","nero","scab","finn","mich", "turd","then","poem","noun","oxus","brow","door","saws","eben","wart","wand","rosa","left","lina", "cabs","rapt","olin","suet","kalb","mans","dawn","riel","temp","chug","peal","drew","null","hath", "many","took","fond","gate","sate","leak","zany","vans","mart","hess","home","long","dirk","bile", "lace","moog","axes","zone","fork","duct","rico","rife","deep","tiny","hugh","bilk","waft","swig", "pans","with","kern","busy","film","lulu","king","lord","veda","tray","legs","soot","ells","wasp", "hunt","earl","ouch","diem","yell","pegs","blvd","polk","soda","zorn","liza","slop","week","kill", "rusk","eric","sump","haul","rims","crop","blob","face","bins","read","care","pele","ritz","beau", "golf","drip","dike","stab","jibs","hove","junk","hoax","tats","fief","quad","peat","ream","hats", "root","flak","grit","clap","pugh","bosh","lock","mute","crow","iced","lisa","bela","fems","oxes", "vies","gybe","huff","bull","cuss","sunk","pups","fobs","turf","sect","atom","debt","sane","writ", "anon","mayo","aria","seer","thor","brim","gawk","jack","jazz","menu","yolk","surf","libs","lets", "bans","toil","open","aced","poor","mess","wham","fran","gina","dote","love","mood","pale","reps", "ines","shot","alar","twit","site","dill","yoga","sear","vamp","abel","lieu","cuff","orbs","rose", "tank","gape","guam","adar","vole","your","dean","dear","hebe","crab","hump","mole","vase","rode", "dash","sera","balk","lela","inca","gaea","bush","loud","pies","aide","blew","mien","side","kerr", "ring","tess","prep","rant","lugs","hobo","joke","odds","yule","aida","true","pone","lode","nona", "weep","coda","elmo","skim","wink","bras","pier","bung","pets","tabs","ryan","jock","body","sofa", "joey","zion","mace","kick","vile","leno","bali","fart","that","redo","ills","jogs","pent","drub", "slaw","tide","lena","seep","gyps","wave","amid","fear","ties","flan","wimp","kali","shun","crap", "sage","rune","logs","cain","digs","abut","obit","paps","rids","fair","hack","huns","road","caws", "curt","jute","fisk","fowl","duty","holt","miss","rude","vito","baal","ural","mann","mind","belt", "clem","last","musk","roam","abed","days","bore","fuze","fall","pict","dump","dies","fiat","vent", "pork","eyed","docs","rive","spas","rope","ariz","tout","game","jump","blur","anti","lisp","turn", "san0","food","moos","hoop","saul","arch","fury","rise","diss","hubs","burs","grid","ilks","suns", "flea","soil","lung","want","nola","fins","thud","kidd","juan","heps","nape","rash","burt","bump", "tots","brit","mums","bole","shah","tees","skip","limb","umps","ache","arcs","raft","halo","luce", "bahs","leta","conk","duos","siva","went","peek","sulk","reap","free","dubs","lang","toto","hasp", "ball","rats","nair","myst","wang","snug","nash","laos","ante","opal","tina","pore","bite","haas", "myth","yugo","foci","dent","bade","pear","mods","auto","shop","etch","lyly","curs","aron","slew", "tyro","sack","wade","clio","gyro","butt","icky","char","itch","halt","gals","yang","tend","pact", "bees","suit","puny","hows","nina","brno","oops","lick","sons","kilo","bust","nome","mona","dull", "join","hour","papa","stag","bern","wove","lull","slip","laze","roil","alto","bath","buck","alma", "anus","evil","dumb","oreo","rare","near","cure","isis","hill","kyle","pace","comb","nits","flip", "clop","mort","thea","wall","kiel","judd","coop","dave","very","amie","blah","flub","talc","bold", "fogy","idea","prof","horn","shoo","aped","pins","helm","wees","beer","womb","clue","alba","aloe", "fine","bard","limo","shaw","pint","swim","dust","indy","hale","cats","troy","wens","luke","vern", "deli","both","brig","daub","sara","sued","bier","noel","olga","dupe","look","pisa","knox","murk", "dame","matt","gold","jame","toge","luck","peck","tass","calf","pill","wore","wadi","thur","parr", "maul","tzar","ones","lees","dark","fake","bast","zoom","here","moro","wine","bums","cows","jean", "palm","fume","plop","help","tuba","leap","cans","back","avid","lice","lust","polo","dory","stew", "kate","rama","coke","bled","mugs","ajax","arts","drug","pena","cody","hole","sean","deck","guts", "kong","bate","pitt","como","lyle","siam","rook","baby","jigs","bret","bark","lori","reba","sups", "made","buzz","gnaw","alps","clay","post","viol","dina","card","lana","doff","yups","tons","live", "kids","pair","yawl","name","oven","sirs","gyms","prig","down","leos","noon","nibs","cook","safe", "cobb","raja","awes","sari","nerd","fold","lots","pete","deal","bias","zeal","girl","rage","cool", "gout","whey","soak","thaw","bear","wing","nagy","well","oink","sven","kurt","etna","held","wood", "high","feta","twee","ford","cave","knot","tory","ibis","yaks","vets","foxy","sank","cone","pius", "tall","seem","wool","flap","gird","lore","coot","mewl","sere","real","puts","sell","nuts","foil", "lilt","saga","heft","dyed","goat","spew","daze","frye","adds","glen","tojo","pixy","gobi","stop", "tile","hiss","shed","hahn","baku","ahas","sill","swap","also","carr","manx","lime","debs","moat", "eked","bola","pods","coon","lacy","tube","minx","buff","pres","clew","gaff","flee","burn","whom", "cola","fret","purl","wick","wigs","donn","guys","toni","oxen","wite","vial","spam","huts","vats", "lima","core","eula","thad","peon","erie","oats","boyd","cued","olaf","tams","secs","urey","wile", "penn","bred","rill","vary","sues","mail","feds","aves","code","beam","reed","neil","hark","pols", "gris","gods","mesa","test","coup","heed","dora","hied","tune","doze","pews","oaks","bloc","tips", "maid","goof","four","woof","silo","bray","zest","kiss","yong","file","hilt","iris","tuns","lily", "ears","pant","jury","taft","data","gild","pick","kook","colt","bohr","anal","asps","babe","bach", "mash","biko","bowl","huey","jilt","goes","guff","bend","nike","tami","gosh","tike","gees","urge", "path","bony","jude","lynn","lois","teas","dunn","elul","bonn","moms","bugs","slay","yeah","loan", "hulk","lows","damn","nell","jung","avis","mane","waco","loin","knob","tyke","anna","hire","luau", "tidy","nuns","pots","quid","exec","hans","hera","hush","shag","scot","moan","wald","ursa","lorn", "hunk","loft","yore","alum","mows","slog","emma","spud","rice","worn","erma","need","bags","lark", "kirk","pooh","dyes","area","dime","luvs","foch","refs","cast","alit","tugs","even","role","toed", "caph","nigh","sony","bide","robs","folk","daft","past","blue","flaw","sana","fits","barr","riot", "dots","lamp","cock","fibs","harp","tent","hate","mali","togs","gear","tues","bass","pros","numb", "emus","hare","fate","wife","mean","pink","dune","ares","dine","oily","tony","czar","spay","push", "glum","till","moth","glue","dive","scad","pops","woks","andy","leah","cusp","hair","alex","vibe", "bulb","boll","firm","joys","tara","cole","levy","owen","chow","rump","jail","lapp","beet","slap", "kith","more","maps","bond","hick","opus","rust","wist","shat","phil","snow","lott","lora","cary", "mote","rift","oust","klee","goad","pith","heep","lupe","ivan","mimi","bald","fuse","cuts","lens", "leer","eyry","know","razz","tare","pals","geek","greg","teen","clef","wags","weal","each","haft", "nova","waif","rate","katy","yale","dale","leas","axum","quiz","pawn","fend","capt","laws","city", "chad","coal","nail","zaps","sort","loci","less","spur","note","foes","fags","gulp","snap","bogs", "wrap","dane","melt","ease","felt","shea","calm","star","swam","aery","year","plan","odin","curd", "mira","mops","shit","davy","apes","inky","hues","lome","bits","vila","show","best","mice","gins", "next","roan","ymir","mars","oman","wild","heal","plus","erin","rave","robe","fast","hutu","aver", "jodi","alms","yams","zero","revs","wean","chic","self","jeep","jobs","waxy","duel","seek","spot", "raps","pimp","adan","slam","tool","morn","futz","ewes","errs","knit","rung","kans","muff","huhs", "tows","lest","meal","azov","gnus","agar","sips","sway","otis","tone","tate","epic","trio","tics", "fade","lear","owns","robt","weds","five","lyon","terr","arno","mama","grey","disk","sept","sire", "bart","saps","whoa","turk","stow","pyle","joni","zinc","negs","task","leif","ribs","malt","nine", "bunt","grin","dona","nope","hams","some","molt","smit","sacs","joan","slav","lady","base","heck", "list","take","herd","will","nubs","burg","hugs","peru","coif","zoos","nick","idol","levi","grub", "roth","adam","elma","tags","tote","yaws","cali","mete","lula","cubs","prim","luna","jolt","span", "pita","dodo","puss","deer","term","dolt","goon","gary","yarn","aims","just","rena","tine","cyst", "meld","loki","wong","were","hung","maze","arid","cars","wolf","marx","faye","eave","raga","flow", "neal","lone","anne","cage","tied","tilt","soto","opel","date","buns","dorm","kane","akin","ewer", "drab","thai","jeer","grad","berm","rods","saki","grus","vast","late","lint","mule","risk","labs", "snit","gala","find","spin","ired","slot","oafs","lies","mews","wino","milk","bout","onus","tram", "jaws","peas","cleo","seat","gums","cold","vang","dewy","hood","rush","mack","yuan","odes","boos", "jami","mare","plot","swab","borg","hays","form","mesh","mani","fife","good","gram","lion","myna", "moor","skin","posh","burr","rime","done","ruts","pays","stem","ting","arty","slag","iron","ayes", "stub","oral","gets","chid","yens","snub","ages","wide","bail","verb","lamb","bomb","army","yoke", "gels","tits","bork","mils","nary","barn","hype","odom","avon","hewn","rios","cams","tact","boss", "oleo","duke","eris","gwen","elms","deon","sims","quit","nest","font","dues","yeas","zeta","bevy", "gent","torn","cups","worm","baum","axon","purr","vise","grew","govs","meat","chef","rest","lame"}; String[] temp = {"frye","heat","tree","thee","game","free","hell","fame","faye"}; FindLadders main = new FindLadders(); List<String> wordList = new ArrayList<>(); for (String each : data) { wordList.add(each); } for (List<String> each : main.findLadders( "sand", "acne",wordList)) { Util.util.prinout(each); } } }
这题依然死在队列扩容上……,因为要得到所有的路径,所以队列必须非常长,依次试了,要7000以上的容量才装得下……主要是内部封装的队列有杂七杂八的东西,怕他更慢
另外在判断函数里,如果前后相等的单词,需要返回false,否则有可能会多一倍的时间……
这道题空间击败99%
时间击败5%……
看来还有的地方需要优化
今天实在学不动了/捂脸,改天有空再优化
代码已ac
希望对大家有所帮助
以上