1 00:00:00,000 --> 00:00:03,381 >> [Muzikos grojimo] 2 00:00:03,381 --> 00:00:04,604 3 00:00:04,604 --> 00:00:05,520 Doug LLOYD: Visos dešinę. 4 00:00:05,520 --> 00:00:07,860 Taigi, jei jūs ką tik baigė, kad Vaizdo atskirai susijusių sąrašus atsiprašau 5 00:00:07,860 --> 00:00:09,568 Aš palikau tave off tiek iš Įspūdingos filmą. 6 00:00:09,568 --> 00:00:12,790 Bet aš džiaugiuosi esate čia baigti iš dvigubai susijusių sąrašus istorija. 7 00:00:12,790 --> 00:00:15,250 >> Taigi, jei jūs prisimenate iš kad vaizdo, mes kalbėjome 8 00:00:15,250 --> 00:00:18,500 apie tai, kaip atskirai susietų sąrašai padaryti dalyvauti mūsų gebėjimą 9 00:00:18,500 --> 00:00:22,090 susidoroti su informacijos kur daugybė elementų 10 00:00:22,090 --> 00:00:24,442 arba daiktų skaičius sąrašas gali augti arba mažėti. 11 00:00:24,442 --> 00:00:26,400 Dabar mes galime susidoroti su kažkas panašaus, kad, kai 12 00:00:26,400 --> 00:00:28,310 mes negalėjo susidoroti su juo su matricomis. 13 00:00:28,310 --> 00:00:30,560 >> Bet jie kenčia nuo vieno kritiškai apribojimas, kuris 14 00:00:30,560 --> 00:00:33,790 yra tai, kad su pavieniui susietų sąrašas, mes galime tik kada nors perkelti 15 00:00:33,790 --> 00:00:36,200 viena kryptimi per sąrašo. 16 00:00:36,200 --> 00:00:39,010 Ir tik reali situacija kai tai gali tapti problema 17 00:00:39,010 --> 00:00:41,250 buvo, kai mes stengiamės ištrinti vieną elementą. 18 00:00:41,250 --> 00:00:46,000 Ir mes net nebuvo aptarti, kaip tai padaryti į vieną susietos sąrašą Pseudocode. 19 00:00:46,000 --> 00:00:48,797 Tai tikrai vykdytinas, tačiau jis gali būti šiek tiek vargo. 20 00:00:48,797 --> 00:00:50,630 Taigi, jei jums rasti sau tokioje situacijoje, kai 21 00:00:50,630 --> 00:00:53,175 Jūs bandote ištrinti Vienviečiai elementai iš sąrašo 22 00:00:53,175 --> 00:00:55,430 arba ji vyksta būti reikalaujama kad jums bus ištrinti 23 00:00:55,430 --> 00:00:57,970 Vienviečiai elementai iš sąrašas, galbūt norėsite 24 00:00:57,970 --> 00:01:02,090 apsvarstyti naudojant dvigubai susietų sąrašą, o ne pavieniui susietos sąrašą. 25 00:01:02,090 --> 00:01:06,320 Kadangi dvigubai susiję sąrašai leidžia jums judėti į priekį ir atgal abu 26 00:01:06,320 --> 00:01:09,340 per vietoj sąrašą tik pirmyn per list-- 27 00:01:09,340 --> 00:01:13,950 tiesiog pridedant vieną papildomą elementą mūsų struktūros apibrėžimą 28 00:01:13,950 --> 00:01:16,690 už dvigubai susiję sąrašas mazgas. 29 00:01:16,690 --> 00:01:19,770 >> Vėlgi, jei jūs nesiruošia būti ištrinti atskirus elementus 30 00:01:19,770 --> 00:01:24,810 nuo list--, nes mes įtraukiame papildomas laukas mūsų struktūra 31 00:01:24,810 --> 00:01:28,340 apibrėžimas, patys mazgai už dvigubai susijusių sąrašus 32 00:01:28,340 --> 00:01:29,550 ketinate būti didesnis. 33 00:01:29,550 --> 00:01:31,600 Jie ketina imtis iki daugiau baitų atminties. 34 00:01:31,600 --> 00:01:34,160 Ir todėl, jei tai nėra kažkas jūs ketinate reikia padaryti, 35 00:01:34,160 --> 00:01:36,300 jūs galite nuspręsti, kad tai neverta kompromisą 36 00:01:36,300 --> 00:01:39,360 turėti išleisti papildomų baitųatminties reikalingas 37 00:01:39,360 --> 00:01:43,940 už dvigubai susietą sąrašą, jei nesate bus ištrinant pavienius elementus. 38 00:01:43,940 --> 00:01:46,760 Bet jie taip pat kietas kitų dalykų taip pat. 39 00:01:46,760 --> 00:01:51,260 >> Taigi, kaip jau sakiau, mes tiesiog pridėti vienas lauke mūsų struktūra 40 00:01:51,260 --> 00:01:55,360 definition-- šią sąvoką ankstesnio rodyklę. 41 00:01:55,360 --> 00:01:58,620 Taigi su atskirai susietos sąrašą, mes turi vertę ir kitą rodyklę, 42 00:01:58,620 --> 00:02:02,850 todėl dvigubai susietų sąrašas tiesiog turi būdas judėti atgal, taip pat. 43 00:02:02,850 --> 00:02:04,960 >> Dabar atskirai susietų Sąrašas vaizdo, mes kalbėjome 44 00:02:04,960 --> 00:02:07,210 apie tai yra penki iš Pagrindiniai dalykai, kuriuos reikia 45 00:02:07,210 --> 00:02:09,449 gali padaryti dirbti su susijusių sąrašus. 46 00:02:09,449 --> 00:02:12,880 Ir dauguma šių, tuo kad tai dvigubai susietų sąrašas 47 00:02:12,880 --> 00:02:14,130 tikrai nėra didelis šuolis. 48 00:02:14,130 --> 00:02:17,936 Mes vis dar galite ieškoti tiesiog juda į priekį nuo pradžios iki pabaigos. 49 00:02:17,936 --> 00:02:20,810 Mes vis dar galime sukurti mazgas iš plonas oro, beveik tas pats kelias. 50 00:02:20,810 --> 00:02:23,591 Mes galime ištrinti sąrašus gana tas pats per daug. 51 00:02:23,591 --> 00:02:25,340 Vieninteliai dalykai, kurie yra subtiliai skiriasi, 52 00:02:25,340 --> 00:02:28,970 tikrai, yra įterpiant naujus mazgus į sąrašą, 53 00:02:28,970 --> 00:02:33,722 ir mes pagaliau kalbėti apie išbraukiant vienas elementas iš sąrašo, taip pat. 54 00:02:33,722 --> 00:02:35,430 Vėlgi, gana daug kiti trys, mes 55 00:02:35,430 --> 00:02:37,888 nesiruošia kalbėti apie juos dabar, nes jie tiesiog 56 00:02:37,888 --> 00:02:43,920 labai nedideli patobulinimai apie idėjas aptarti į vieną susietos sąrašo video. 57 00:02:43,920 --> 00:02:46,292 >> Taigi leiskite įterpti naują viršūnę į dvigubai susietą sąrašą. 58 00:02:46,292 --> 00:02:48,750 Mes kalbėjome apie tai daryti atskirai susietų sąrašus, taip pat, 59 00:02:48,750 --> 00:02:52,020 bet ten yra papildoma pora pagauna su dvigubai susijusių sąrašus. 60 00:02:52,020 --> 00:02:55,280 Mes [? artimųjų?] į galvą sąrašas čia, o kai savavališkai vertė, 61 00:02:55,280 --> 00:02:58,600 ir mes norime gauti naują galvą išeinamajame šios funkcijos sąrašą. 62 00:02:58,600 --> 00:03:01,414 Štai kodėl ji grąžina dllnode žvaigždė. 63 00:03:01,414 --> 00:03:02,330 Taigi, kas yra žingsniai? 64 00:03:02,330 --> 00:03:04,496 Jie yra, vėl, labai panašios į vieną susietų sąrašus 65 00:03:04,496 --> 00:03:05,670 su vienu papildomu to. 66 00:03:05,670 --> 00:03:08,900 Mes norime, kad skiria erdvę nauja mazgas ir įsitikinkite, kad jis galioja. 67 00:03:08,900 --> 00:03:11,510 Mes norime užpildyti šią mazgas iki su kokia informacija, kurią mes 68 00:03:11,510 --> 00:03:12,564 norite įdėti į jį. 69 00:03:12,564 --> 00:03:15,480 Paskutinis dalykas, kurį mes turime do-- Papildomas dalykas, mes turime daryti, rather-- 70 00:03:15,480 --> 00:03:19,435 yra nustatyti Ankstesnis žymiklį senosios galvos sąrašo. 71 00:03:19,435 --> 00:03:21,310 Atminkite, kad, nes iš dvigubai susiję sąrašus, 72 00:03:21,310 --> 00:03:23,110 mes galime judėti į priekį ir backwards-- kuris 73 00:03:23,110 --> 00:03:27,080 reiškia, kad kiekvienas mazgas iš tikrųjų nurodo kitų dviejų mazgų, o ne tik vieną. 74 00:03:27,080 --> 00:03:29,110 Ir todėl mes turime nustatyti senas vadovas sąrašo 75 00:03:29,110 --> 00:03:32,151 atkreipti atgal į naują vadovas susietą sąrašą, kuris buvo kažkas 76 00:03:32,151 --> 00:03:33,990 mes neturėjome padaryti anksčiau. 77 00:03:33,990 --> 00:03:37,420 Ir, kaip ir anksčiau, mes tiesiog grįžti žymiklį į naują galvos sąrašo. 78 00:03:37,420 --> 00:03:38,220 >> Taigi čia sąrašas. 79 00:03:38,220 --> 00:03:40,144 Mes norime įterpti 12 į šį sąrašą. 80 00:03:40,144 --> 00:03:42,060 Atkreipkite dėmesį, kad schema yra šiek tiek kitoks. 81 00:03:42,060 --> 00:03:47,710 Kiekvienas mazgas yra trys fields-- duomenys, o Kitas žymeklis raudonai, 82 00:03:47,710 --> 00:03:50,170 ir Ankstesnis žymeklis mėlynai. 83 00:03:50,170 --> 00:03:54,059 Nieko ateina prieš 15 mazgas, todėl jos Ankstesnis žymeklis yra niekinis. 84 00:03:54,059 --> 00:03:55,350 Tai iš sąrašo pradžioje. 85 00:03:55,350 --> 00:03:56,560 Nėra nieko prieš jį. 86 00:03:56,560 --> 00:04:03,350 Ir nieko ateina po 10 mazgą ir todėl Toliau žymeklis yra niekinis, taip pat. 87 00:04:03,350 --> 00:04:05,616 >> Taigi leiskite pridėti 12 prie šio sąrašo. 88 00:04:05,616 --> 00:04:08,070 Mums reikia [nesigirdi] erdvės mazgo. 89 00:04:08,070 --> 00:04:11,480 Mes įdėti 12 viduje ji. 90 00:04:11,480 --> 00:04:14,840 Ir tada vėl, mes turime būti labai atsargūs, ne nutraukti grandinę. 91 00:04:14,840 --> 00:04:17,144 Mes norime pertvarkyti rodykles teisinga tvarka. 92 00:04:17,144 --> 00:04:19,519 Ir kartais, kad gali mean-- kaip mes ypač pamatyti 93 00:04:19,519 --> 00:04:24,120 su delete--, kad mes turime kai nereikalingas patarimų, bet tai normalu. 94 00:04:24,120 --> 00:04:25,750 >> Taigi, ką mes norime padaryti pirmiausia? 95 00:04:25,750 --> 00:04:28,290 Norėčiau rekomenduoti Ką reikia tikriausiai 96 00:04:28,290 --> 00:04:35,350 padaryti yra užpildyti iš 12 patarimų mazgas prieš paliesti kas nors kitas. 97 00:04:35,350 --> 00:04:38,640 Taigi, kas yra 12 ketina atkreipti dėmesį į toliau? 98 00:04:38,640 --> 00:04:39,860 15. 99 00:04:39,860 --> 00:04:42,430 Kas ateina anksčiau 12? 100 00:04:42,430 --> 00:04:43,640 Nieko. 101 00:04:43,640 --> 00:04:46,280 Dabar mes užpildyta Papildomas informacija 12 102 00:04:46,280 --> 00:04:49,320 todėl ji turi Ankstesnis Toliau, ir vertę. 103 00:04:49,320 --> 00:04:53,505 >> Dabar mes galime turėti 15-- šis papildomas žingsnis mes kalbame about-- mes 104 00:04:53,505 --> 00:04:56,590 gali turėti 15 punktą atgal į 12. 105 00:04:56,590 --> 00:04:59,634 Ir dabar mes galime judėti į galvą susietą sąrašą taip pat 12. 106 00:04:59,634 --> 00:05:02,550 Taigi tai gana panašus į tai, ką mes veikėte su atskirai susijusių sąrašus, 107 00:05:02,550 --> 00:05:06,940 išskyrus papildomą žingsnį jungiantis senąjį galvą sąrašo 108 00:05:06,940 --> 00:05:09,810 atgal į naujos galvos sąrašo. 109 00:05:09,810 --> 00:05:12,170 >> Dabar galime pagaliau ištrinti mazgas iš susietos sąrašą. 110 00:05:12,170 --> 00:05:14,350 Taigi tarkime, mes turime kai kitas funkcijas, 111 00:05:14,350 --> 00:05:18,080 yra rasti mazgas mes norime ištrinti ir davė mums žymeklį tiksliai 112 00:05:18,080 --> 00:05:19,710 mazgas, kad mes norime ištrinti. 113 00:05:19,710 --> 00:05:22,360 Mes net need-- pasakyti galva vis dar yra pasaulyje deklaruoti. 114 00:05:22,360 --> 00:05:23,590 Mums nereikia galvą čia. 115 00:05:23,590 --> 00:05:26,830 Visa tai funkcija daro tai mes rado žymeklį tiksliai mazgas mes 116 00:05:26,830 --> 00:05:28,090 norite atsikratyti. 117 00:05:28,090 --> 00:05:28,940 Leiskite atsikratyti jos. 118 00:05:28,940 --> 00:05:31,859 Tai daug lengviau su dvigubai susijęs sąrašus. 119 00:05:31,859 --> 00:05:33,650 First-- tai tikrai tik pora dalykų. 120 00:05:33,650 --> 00:05:38,760 Mes tiesiog reikia nustatyti aplinkinių mazgai "patarimų, kad jie praleisti 121 00:05:38,760 --> 00:05:40,240 mazgas norime ištrinti. 122 00:05:40,240 --> 00:05:43,484 Ir tada mes galime ištrinti tą mazgą. 123 00:05:43,484 --> 00:05:45,150 Taigi dar kartą, mes tiesiog išgyvena čia. 124 00:05:45,150 --> 00:05:49,625 Mes, matyt, nusprendė, kad mes norime ištrinti mazgo X 125 00:05:49,625 --> 00:05:51,500 Ir vėl, ką aš daro here-- pagal way-- 126 00:05:51,500 --> 00:05:54,580 yra bendras atveju dėl mazgas, kad yra viduryje. 127 00:05:54,580 --> 00:05:56,547 Yra daug pora balsas įspėjimų, kad jūs 128 00:05:56,547 --> 00:05:59,380 reikia apsvarstyti, kai jūs ištrinti pati pradžia sąrašo 129 00:05:59,380 --> 00:06:01,040 arba labai galas sąrašo. 130 00:06:01,040 --> 00:06:03,730 Yra specialios pora kampiniai atvejai susidoroti su ten. 131 00:06:03,730 --> 00:06:07,960 >> Taigi tai veikia išbraukusi visą mazgą viduryje į list-- vienas, kad 132 00:06:07,960 --> 00:06:11,550 turi teisėtą žymeklį į priekį ir teisėtas žymeklis atgal, 133 00:06:11,550 --> 00:06:14,460 teisėtas Ankstesnių ir ateinančių žymeklis. 134 00:06:14,460 --> 00:06:16,530 Vėlgi, jei jūs dirbate su galuose, jums 135 00:06:16,530 --> 00:06:18,500 reikia tvarkyti tuos šiek tiek kitaip, 136 00:06:18,500 --> 00:06:19,570 ir mes neketiname kalbėti apie tai dabar. 137 00:06:19,570 --> 00:06:21,319 Bet jūs tikriausiai galite išsiaiškinti, ką reikia 138 00:06:21,319 --> 00:06:24,610 būti padaryta tiesiog žiūrėti šį vaizdo įrašą. 139 00:06:24,610 --> 00:06:28,910 >> Taigi mes izoliuoti X. X yra mazgas mes norime ištrinti iš sąrašo. 140 00:06:28,910 --> 00:06:30,140 Ką mes darome? 141 00:06:30,140 --> 00:06:32,800 Pirma, mums reikia pertvarkyti Išorinės patarimų. 142 00:06:32,800 --> 00:06:35,815 Mums reikia pertvarkyti 9 artimiausi praleisti per 13 143 00:06:35,815 --> 00:06:38,030 ir taškas 10-- kuris yra tai, ką mes ką tik padaryti. 144 00:06:38,030 --> 00:06:41,180 Ir mes taip pat turime pertvarkyti 10 ankstesnės 145 00:06:41,180 --> 00:06:44,610 atkreipti 9 vietoj nukreipta į 13. 146 00:06:44,610 --> 00:06:46,490 >> Taigi dar kartą, tai buvo Diagramoje pradėti. 147 00:06:46,490 --> 00:06:47,730 Tai buvo mūsų grandinė. 148 00:06:47,730 --> 00:06:51,027 Turime praleisti 13 bet mes turime taip pat išsaugoti 149 00:06:51,027 --> 00:06:52,110 iš sąrašo vientisumą. 150 00:06:52,110 --> 00:06:54,680 Mes nenorime prarasti bet informacija bet kuria kryptimi. 151 00:06:54,680 --> 00:06:59,620 Taigi mums reikia pertvarkyti Į patarimų atidžiai 152 00:06:59,620 --> 00:07:02,240 todėl mes negalime nutraukti grandinę ne visiems. 153 00:07:02,240 --> 00:07:05,710 >> Taigi, mes galime pasakyti, 9 Next žymiklį nurodo į tą pačią vietą 154 00:07:05,710 --> 00:07:08,040 kad trylikos Next rodyklė nurodo dabar. 155 00:07:08,040 --> 00:07:10,331 Kadangi mes galų gale ketinate norite praleisti 13. 156 00:07:10,331 --> 00:07:13,750 Taigi, kur 13 taškų Toliau, jums noriu devyni vietoj atkreipti ten. 157 00:07:13,750 --> 00:07:15,200 Taigi tai, kad. 158 00:07:15,200 --> 00:07:20,370 Ir tada, kur 13 taškų atgal kad, nepaisant ateina prieš 13 159 00:07:20,370 --> 00:07:24,800 mes norime 10 taškas į tas, kad vietoj 13. 160 00:07:24,800 --> 00:07:29,290 Dabar pastebėsite, jei jums sekti strėlės, mes galime nukristi 13 161 00:07:29,290 --> 00:07:32,380 be faktiškai praranda bet kokią informaciją. 162 00:07:32,380 --> 00:07:36,002 Mes įnirtingai sąrašo vientisumą, juda pirmyn ir atgal. 163 00:07:36,002 --> 00:07:38,210 Ir tada mes galime tiesiog tarsi nuo išvalyti jį truputį 164 00:07:38,210 --> 00:07:40,930 traukiant sąrašą kartu. 165 00:07:40,930 --> 00:07:43,270 Taigi, mes pertvarkytas patarimų iš abiejų pusių. 166 00:07:43,270 --> 00:07:46,231 Ir tada mes išlaisvino X mazgas, kad pateiktos 13, 167 00:07:46,231 --> 00:07:47,480 ir mes nenutraukė grandinę. 168 00:07:47,480 --> 00:07:50,980 Taigi mes padarėme gerai. 169 00:07:50,980 --> 00:07:53,000 >> Paskutinė pastaba čia susijusius sąrašus. 170 00:07:53,000 --> 00:07:55,990 Taigi tiek singly- ir dvigubai susietų sąrašus, kaip mes matėme, 171 00:07:55,990 --> 00:07:58,959 parama tikrai efektyvus įterpimo ir išbraukta iš elementų. 172 00:07:58,959 --> 00:08:00,750 Jūs galite labai daug padaryti jis nuolat laiko. 173 00:08:00,750 --> 00:08:03,333 Ką mes turime daryti, kad ištrinti elementas tik prieš antros? 174 00:08:03,333 --> 00:08:04,440 Mes persikėlė vieną žymeklį. 175 00:08:04,440 --> 00:08:05,920 Mes persikėlė kitą žymeklį. 176 00:08:05,920 --> 00:08:07,915 Mes išlaisvino X-- paėmė tris operacijas. 177 00:08:07,915 --> 00:08:14,500 Jis visada trunka tris operacijas į ištrinti tą node-- nemokamai mazgas. 178 00:08:14,500 --> 00:08:15,280 >> Kaip mes įterpti? 179 00:08:15,280 --> 00:08:17,280 Na, mes tiesiog visada Spręsti pradžioje 180 00:08:17,280 --> 00:08:19,400 jei mes įdėti efektyviai. 181 00:08:19,400 --> 00:08:21,964 Taigi, mes turime rearrange-- priklausomai, jei tai 182 00:08:21,964 --> 00:08:24,380 singly- arba dvigubai susietų sąrašą, gali tekti padaryti tris 183 00:08:24,380 --> 00:08:26,824 ar keturis operacijos maks. 184 00:08:26,824 --> 00:08:28,365 Bet vėl, tai visada trys ar keturi. 185 00:08:28,365 --> 00:08:30,531 Nesvarbu, kiek elementai yra mūsų sąraše, 186 00:08:30,531 --> 00:08:33,549 tai visada trys ar keturi operations-- kaip išbraukta visada 187 00:08:33,549 --> 00:08:35,320 trys ar keturi operacijos. 188 00:08:35,320 --> 00:08:36,919 Tai pastovus laikas. 189 00:08:36,919 --> 00:08:38,169 Taigi tai tikrai puikus. 190 00:08:38,169 --> 00:08:40,620 >> Su masyvų, mes darome kažkas panašaus įterpimo rūšiuoti. 191 00:08:40,620 --> 00:08:44,739 Jūs tikriausiai prisimena, kad įterpimą rūšiuoti nėra pastovus laikas algoritmas. 192 00:08:44,739 --> 00:08:46,030 Tai tikrai gana brangus. 193 00:08:46,030 --> 00:08:48,840 Taigi tai yra daug geriau įterpti. 194 00:08:48,840 --> 00:08:51,840 Bet, kaip minėjau atskirai susietų sąrašas vaizdo įrašą, 195 00:08:51,840 --> 00:08:54,030 mes turime trūkumų čia pat, tiesa? 196 00:08:54,030 --> 00:08:57,580 Mes prarado gebėjimą atsitiktinai prieiti elementų. 197 00:08:57,580 --> 00:09:02,310 Mes negalime pasakyti, noriu elementas Number Four ar elementas skaičius 10 susietą sąrašą 198 00:09:02,310 --> 00:09:04,990 taip pat, kad mes galime padaryti, kad masyvo 199 00:09:04,990 --> 00:09:08,630 ar mes galime tik tiesiogiai puslapis į mūsų masyvas anketa elementas. 200 00:09:08,630 --> 00:09:10,930 >> Ir taip bando rasti elementas, susietą list-- 201 00:09:10,930 --> 00:09:15,880 jei paieška important-- dabar gali imtis linijinį laiką. 202 00:09:15,880 --> 00:09:18,330 Kadangi sąrašas pailgėja, tai gali užtrukti vieną papildomą žingsnį 203 00:09:18,330 --> 00:09:22,644 už kiekvieną elementą sąraše tam kad rasti ką mes ieškome. 204 00:09:22,644 --> 00:09:23,560 Taigi prekybos kompromisai. 205 00:09:23,560 --> 00:09:25,780 Yra daug pro tiek ir pa elementas čia. 206 00:09:25,780 --> 00:09:29,110 >> Ir dvigubai susiję sąrašai nėra paskutinis rūšies duomenų struktūros derinys 207 00:09:29,110 --> 00:09:32,840 kad mes kalbame apie, atsižvelgiant į visus pagrindinius pastatą 208 00:09:32,840 --> 00:09:34,865 blokai C komponavimas. 209 00:09:34,865 --> 00:09:37,900 Nes iš tiesų, mes galime net padaryti geriau nei tai 210 00:09:37,900 --> 00:09:41,970 sukurti duomenų struktūrą, kuri Jums gali būti suteikta galimybė ieškoti 211 00:09:41,970 --> 00:09:43,360 nuolat laiko taip pat. 212 00:09:43,360 --> 00:09:46,080 Bet daugiau apie tai kitoje vaizdo. 213 00:09:46,080 --> 00:09:47,150 >> Aš Doug Lloyd. 214 00:09:47,150 --> 00:09:49,050 Tai CS50. 215 00:09:49,050 --> 00:09:50,877