1 00:00:00,000 --> 00:00:02,640 [Powered by Google Translate] [სემინარი: ტექნიკური ინტერვიუები] 2 00:00:02,640 --> 00:00:04,630 [Kenny Yu, ჰარვარდის უნივერსიტეტი] 3 00:00:04,630 --> 00:00:08,910 [ეს არის CS50.] [CS50.TV] 4 00:00:08,910 --> 00:00:12,420 Hi ყველას, მე Kenny. მე გაკეთებული უმცროსი შესწავლას კომპიუტერულ მეცნიერებათა. 5 00:00:12,420 --> 00:00:17,310 მე ყოფილი CS TF, და მინდა მე მქონდა ამ როდესაც მე underclassman, 6 00:00:17,310 --> 00:00:19,380 და ამიტომაც მე ვაძლევთ ამ სემინარს. 7 00:00:19,380 --> 00:00:21,370 ამიტომ ვიმედოვნებ, რომ სარგებლობენ, ეს. 8 00:00:21,370 --> 00:00:23,470 ეს სემინარი ტექნიკურ ინტერვიუები, 9 00:00:23,470 --> 00:00:26,650 და ყველა ჩემი რესურსების შეგიძლიათ იხილოთ ამ ბმულზე, 10 00:00:26,650 --> 00:00:32,350 ამ ლინკები უფლება აქ, რამდენიმე რესურსი. 11 00:00:32,350 --> 00:00:36,550 ამიტომ მე მივიღე ჩამონათვალი პრობლემები, ფაქტობრივად, ძალიან ცოტა პრობლემები. 12 00:00:36,550 --> 00:00:40,800 ასევე ზოგადად რესურსების გვერდზე, სადაც შეგვიძლია მოვძებნოთ რჩევები 13 00:00:40,800 --> 00:00:42,870 თუ როგორ უნდა მოემზადოს ინტერვიუში, 14 00:00:42,870 --> 00:00:46,470 რჩევა, რაც თქვენ უნდა გავაკეთოთ დროს ფაქტობრივი ინტერვიუში, 15 00:00:46,470 --> 00:00:51,910 ასევე, თუ როგორ უნდა მივუდგეთ პრობლემებს და რესურსების მომავალი მითითება. 16 00:00:51,910 --> 00:00:53,980 ეს ყველაფერი ონლაინ. 17 00:00:53,980 --> 00:00:58,290 და მხოლოდ იმიტომ, რომ შესავალში ამ სემინარზე, პასუხისმგებლობის, 18 00:00:58,290 --> 00:01:00,690 მოსწონს ეს არ უნდა - თქვენი ინტერვიუ მომზადება 19 00:01:00,690 --> 00:01:02,800 არ უნდა შემოიფარგლოს ამ სიაში. 20 00:01:02,800 --> 00:01:04,750 ეს მხოლოდ ნიშნავს, რომ სახელმძღვანელო, 21 00:01:04,750 --> 00:01:08,890 და თქვენ უნდა აუცილებლად მიიღოს ყველაფერი ვამბობ ერთად მარცვალი მარილი, 22 00:01:08,890 --> 00:01:14,620 არამედ გამოიყენოს ყველაფერი მე რომ დაგეხმაროთ თქვენი ინტერვიუს მომზადება. 23 00:01:14,620 --> 00:01:16,400 >> მე ვაპირებ დაჩქარდეს მეშვეობით მომდევნო რამდენიმე სლაიდები 24 00:01:16,400 --> 00:01:18,650 ამიტომ ჩვენ შეუძლია მიიღოს ფაქტობრივი შემთხვევაში კვლევები. 25 00:01:18,650 --> 00:01:23,630 სტრუქტურა ინტერვიუ პროგრამული საინჟინრო postion, 26 00:01:23,630 --> 00:01:26,320 ჩვეულებრივ ეს არის 30 დან 45 წუთი, 27 00:01:26,320 --> 00:01:29,810 მრავალჯერადი რაუნდები, დამოკიდებულია კომპანიის. 28 00:01:29,810 --> 00:01:33,090 ხშირად თქვენ უნდა კოდირების თეთრ დაფაზე. 29 00:01:33,090 --> 00:01:35,960 ამიტომ თეთრ დაფაზე მოსწონს, მაგრამ ხშირად მცირე მასშტაბით. 30 00:01:35,960 --> 00:01:38,540 თუ თქვენ მქონე სატელეფონო ინტერვიუში, თქვენ ალბათ გამოყენებით 31 00:01:38,540 --> 00:01:44,030 ან collabedit ან Google Doc ასე ხედავენ თქვენ ცხოვრობთ კოდირების 32 00:01:44,030 --> 00:01:46,500 ხოლო თქვენ ინტერვიუს სატელეფონო. 33 00:01:46,500 --> 00:01:48,490 ინტერვიუ თავისთავად ჩვეულებრივ 2 ან 3 პრობლემებს 34 00:01:48,490 --> 00:01:50,620 ტესტირების თქვენს კომპიუტერში მეცნიერების ცოდნა. 35 00:01:50,620 --> 00:01:54,490 იგი ჩვენ თითქმის აუცილებლად ჩავრთოთ კოდირების. 36 00:01:54,490 --> 00:01:59,540 სახის კითხვებით, რომ თქვენ ნახავთ ჩვეულებრივ მონაცემები სტრუქტურებისა და ალგორითმები. 37 00:01:59,540 --> 00:02:02,210 და აკეთებს ამ სახის პრობლემები, 38 00:02:02,210 --> 00:02:07,830 ისინი გთხოვოთ, მინდა, რა არის დრო და სივრცე სირთულის, დიდი O? 39 00:02:07,830 --> 00:02:09,800 ხშირად ისინი ასევე ვთხოვთ უმაღლესი დონის კითხვები, 40 00:02:09,800 --> 00:02:12,530 ასე, დიზაინი სისტემა, 41 00:02:12,530 --> 00:02:14,770 როგორ იწვა თქვენი კოდი? 42 00:02:14,770 --> 00:02:18,370 რა ინტერფეისები, რა კლასი, რა მოდულები გაქვთ თქვენს სისტემაში, 43 00:02:18,370 --> 00:02:20,900 და როგორ გავაკეთოთ ეს ურთიერთქმედება ერთად? 44 00:02:20,900 --> 00:02:26,130 ასე რომ მონაცემები სტრუქტურებისა და ალგორითმები ასევე დიზაინის სისტემები. 45 00:02:26,130 --> 00:02:29,180 >> ზოგიერთი ზოგადი რჩევა, სანამ ჩვენ ჩაყვინთვის, რათა ჩვენს შემთხვევაში კვლევები. 46 00:02:29,180 --> 00:02:32,300 ვფიქრობ ყველაზე მნიშვნელოვანი წესი ყოველთვის ფიქრობს გარეთ ხმამაღალი. 47 00:02:32,300 --> 00:02:36,980 ინტერვიუ უნდა იყოს თქვენი შანსი რათა ნახოთ off თქვენი აზროვნების პროცესი. 48 00:02:36,980 --> 00:02:39,820 წერტილი ინტერვიუში არის ინტერვიუერს რომ ლიანდაგი 49 00:02:39,820 --> 00:02:42,660 როგორ ფიქრობთ და როგორ გავლა პრობლემა. 50 00:02:42,660 --> 00:02:45,210 ყველაზე უარესი, რაც შეგიძლიათ გააკეთოთ არის იყოს ჩუმად მთელ ინტერვიუში. 51 00:02:45,210 --> 00:02:50,090 ეს მხოლოდ კარგი. 52 00:02:50,090 --> 00:02:53,230 როდესაც თქვენ მოცემულია კითხვა, თქვენ ასევე გვინდა დავრწმუნდეთ გესმით კითხვაზე. 53 00:02:53,230 --> 00:02:55,350 ამიტომ ვიმეორებ კითხვას უკან საკუთარი სიტყვები 54 00:02:55,350 --> 00:02:58,920 და მცდელობა მუშაობა საფუძვლიანი რამოდენიმე მარტივი ტესტის 55 00:02:58,920 --> 00:03:01,530 რათა დარწმუნდეთ, რომ თქვენ გესმით კითხვაზე. 56 00:03:01,530 --> 00:03:05,510 სამუშაო მეშვეობით რამდენიმე ტესტის ასევე გაძლევთ ინტუიცია თუ როგორ გადავჭრათ ეს პრობლემა. 57 00:03:05,510 --> 00:03:11,210 ალბათ კი აღმოაჩენთ რამდენიმე ნიმუში, რათა დაგეხმაროთ ამ პრობლემის მოსაგვარებლად. 58 00:03:11,210 --> 00:03:14,500 მათი დიდი წვერი არის არ უნდა იმედგაცრუებული. 59 00:03:14,500 --> 00:03:17,060 ნუ იმედგაცრუებული. 60 00:03:17,060 --> 00:03:19,060 გასაუბრება რთული, მაგრამ ყველაზე უარესი, რაც შეგიძლიათ გააკეთოთ, 61 00:03:19,060 --> 00:03:23,330 გარდა იმისა ჩუმად, უნდა აშკარად იმედგაცრუებულია. 62 00:03:23,330 --> 00:03:27,410 თქვენ არ მინდა, რომ შთაბეჭდილება, რომ ინტერვიუერს. 63 00:03:27,410 --> 00:03:33,960 ერთი რამ, რომ თქვენ - ასე, ბევრი ადამიანი, როდესაც მათ წასვლას ინტერვიუში, 64 00:03:33,960 --> 00:03:37,150 ისინი ცდილობენ ცდილობენ იპოვონ საუკეთესო გადაწყვეტილება პირველი, 65 00:03:37,150 --> 00:03:39,950 როდესაც რეალურად, აქ არის როგორც წესი glaringly აშკარა გადაწყვეტა. 66 00:03:39,950 --> 00:03:43,500 ეს შეიძლება იყოს ნელი, ეს შესაძლოა არაეფექტური, მაგრამ თქვენ უნდა სამართლიანი სახელმწიფოს იგი, 67 00:03:43,500 --> 00:03:46,210 უბრალოდ ასე რომ თქვენ არ ამოსავალი წერტილი საიდანაც მუშაობა უკეთესი. 68 00:03:46,210 --> 00:03:48,270 ასევე, მიუთითებს გამოსავალი არის ნელი, თვალსაზრისით 69 00:03:48,270 --> 00:03:52,160 დიდი O დრო სირთულის ან ჰარით სირთულის, 70 00:03:52,160 --> 00:03:54,450 იქნება ვაჩვენოთ ინტერვიუერს, რომ გესმით 71 00:03:54,450 --> 00:03:57,510 ამ საკითხებზე, როდესაც წერა კოდი. 72 00:03:57,510 --> 00:04:01,440 ასე რომ არ შეგეშინდეთ, რათა ამუშავება მარტივი ალგორითმი პირველი 73 00:04:01,440 --> 00:04:04,950 და შემდეგ მუშაობა უკეთესი იქიდან. 74 00:04:04,950 --> 00:04:09,810 ნებისმიერი კითხვები აქამდე? Okay. 75 00:04:09,810 --> 00:04:11,650 >> მოდით ჩაყვინთვის შევიდა ჩვენი პირველი პრობლემა. 76 00:04:11,650 --> 00:04:14,790 "იმის გათვალისწინებით მასივი n რიცხვებით, დაწერეთ ფუნქცია, რომელიც shuffles მასივი 77 00:04:14,790 --> 00:04:20,209 ადგილზე ისეთი, რომ ყველა permutations of n რიცხვებით თანაბრად სავარაუდოა. " 78 00:04:20,209 --> 00:04:23,470 და თავის თავზე იღებს გაქვთ ხელმისაწვდომია შემთხვევითი რიცხვი გენერატორი 79 00:04:23,470 --> 00:04:30,980 რომელიც ამ რიცხვის წელს მერყეობს 0 I, ნახევარი სპექტრი. 80 00:04:30,980 --> 00:04:32,970 ამჯამად ყველას გვესმის ამ კითხვაზე? 81 00:04:32,970 --> 00:04:39,660 მე გაძლევთ მასივი n რიცხვებით, და მინდა shuffle იგი. 82 00:04:39,660 --> 00:04:46,050 ჩემი დირექტორია, მე დავწერე რამდენიმე პროგრამების იმისა, თუ რა ვგულისხმობ. 83 00:04:46,050 --> 00:04:48,910 მე ვაპირებ shuffle მასივი 20 ელემენტები, 84 00:04:48,910 --> 00:04:52,490 საწყისი -10 to +9, 85 00:04:52,490 --> 00:04:57,050 და მინდა დაბეჭდავს სია მოსწონს ეს. 86 00:04:57,050 --> 00:05:02,890 ასე რომ, ეს ჩემი დახარისხებული შეყვანის მასივი, და მინდა shuffle იგი. 87 00:05:02,890 --> 00:05:07,070 ჩვენ გავაკეთებთ ერთხელ. 88 00:05:07,070 --> 00:05:13,780 ამჯამად ყველას გვესმის კითხვა? Okay. 89 00:05:13,780 --> 00:05:16,730 ასე რომ თქვენი გადასაწყვეტია. 90 00:05:16,730 --> 00:05:21,220 რა იდეები? შეგიძლიათ ამის გაკეთება, როგორც N ^ 2, N შესვლა N, N? 91 00:05:21,220 --> 00:05:34,400 კონკურსში მონაწილეობა შეუძლიათ წინადადებები. 92 00:05:34,400 --> 00:05:37,730 Okay. ამიტომ ერთი იდეა, მიერ შემოთავაზებული ემის, 93 00:05:37,730 --> 00:05:45,300 არის პირველი გამოთვლაც შემთხვევითი ნომერი, შემთხვევითი რიცხვი, წელს მერყეობს 0 დან 20. 94 00:05:45,300 --> 00:05:49,840 ამიტომ ვივარაუდოთ ჩვენი array აქვს სიგრძეზე 20. 95 00:05:49,840 --> 00:05:54,800 ჩვენს დიაგრამის 20 ელემენტები, 96 00:05:54,800 --> 00:05:58,560 ეს არის ჩვენი შეყვანის მასივი. 97 00:05:58,560 --> 00:06:04,590 და ახლა, მისი წინადადება არის, რომ შევქმნათ ახალი მასივი, 98 00:06:04,590 --> 00:06:08,440 ასე რომ, ეს იქნება გამომავალი მასივი. 99 00:06:08,440 --> 00:06:12,880 საფუძველზე დავბრუნდი მიერ RAND - 100 00:06:12,880 --> 00:06:17,580 ასე რომ, თუ მე ვიყავი, ასე ვთქვათ, 17, 101 00:06:17,580 --> 00:06:25,640 კოპირება -17 ელემენტს შევიდა პირველი პოზიცია. 102 00:06:25,640 --> 00:06:30,300 ახლა ჩვენ გვჭირდება წაშლა - გვჭირდება გადაეტანა ყველა ელემენტები აქ 103 00:06:30,300 --> 00:06:36,920 მეტი ისე, რომ ჩვენ გვაქვს უფსკრული დასასრულს და არ ხვრელებს შუა. 104 00:06:36,920 --> 00:06:39,860 და ახლა ჩვენ ვიმეორებ პროცესში. 105 00:06:39,860 --> 00:06:46,360 ახლა ჩვენ აირჩიოთ ახალი შემთხვევითი რიცხვი შორის 0 და 19. 106 00:06:46,360 --> 00:06:52,510 ჩვენ გვყავს ახალი მე აქ, და ჩვენ გადააკოპირეთ ეს ელემენტს ამ თანამდებობაზე. 107 00:06:52,510 --> 00:07:00,960 მაშინ ჩვენ გადაეტანა ელემენტი მეტი და ჩვენ ვიმეორებთ პროცესს, სანამ ჩვენ გვაქვს სრული new მასივი. 108 00:07:00,960 --> 00:07:05,890 რა არის პერსპექტივაში დრო ამ ალგორითმი? 109 00:07:05,890 --> 00:07:08,110 ისე, განვიხილოთ გავლენა ამ. 110 00:07:08,110 --> 00:07:10,380 ჩვენ გადასვლის ყველა ელემენტს. 111 00:07:10,380 --> 00:07:16,800 როდესაც ჩვენ ამოიღონ ამ მე, ჩვენ გადავიდა ყველა ელემენტების შემდეგ მას მარცხენა. 112 00:07:16,800 --> 00:07:21,600 და ეს არის O (N) ღირებულება 113 00:07:21,600 --> 00:07:26,100 რადგან რა თუ ჩვენ ამოიღონ პირველ ელემენტს? 114 00:07:26,100 --> 00:07:29,670 ამიტომ თითოეული მოცილება, ჩვენ ამოიღონ - 115 00:07:29,670 --> 00:07:32,170 ყოველ მოცილება დარღვევა O (N) ოპერაცია, 116 00:07:32,170 --> 00:07:41,520 და რადგან ჩვენ არ n removals, ამ მივყავართ O (N ^ 2) shuffle. 117 00:07:41,520 --> 00:07:49,550 Okay. იმდენად კარგი დასაწყისია. კარგი დასაწყისია. 118 00:07:49,550 --> 00:07:55,290 >> კიდევ ერთი წინადადება, გამოვიყენოთ რაღაც ცნობილი როგორც Knuth shuffle, 119 00:07:55,290 --> 00:07:57,540 ან Fisher-Yates shuffle. 120 00:07:57,540 --> 00:07:59,630 და ეს რეალურად ხაზოვანი დრო shuffle. 121 00:07:59,630 --> 00:08:02,200 და იდეა ძალიან გავს. 122 00:08:02,200 --> 00:08:05,160 ერთხელ, ჩვენ გვაქვს ჩვენი შეყვანის მასივი, 123 00:08:05,160 --> 00:08:08,580 მაგრამ ნაცვლად გამოყენებით ორი კოლექტორები ჩვენი input / output, 124 00:08:08,580 --> 00:08:13,590 ჩვენ ვიყენებთ პირველი ნაწილი მასივი ტრეკზე ჩვენი აჩეხვა ნაწილი, 125 00:08:13,590 --> 00:08:18,400 და ჩვენ ტრეკზე, ხოლო შემდეგ ჩვენ დატოვონ დანარჩენი ჩვენი array ამისთვის unshuffled ნაწილი. 126 00:08:18,400 --> 00:08:24,330 ასე რომ აქ არის ის, რასაც ვგულისხმობ. ვიწყებთ off ერთად - ვირჩევთ მე, 127 00:08:24,330 --> 00:08:30,910 array საწყისი 0 დან 20. 128 00:08:30,910 --> 00:08:36,150 ჩვენი მიმდინარე მაჩვენებელი არის მიუთითებს პირველი ინდექსი. 129 00:08:36,150 --> 00:08:39,590 ვირჩევთ ზოგიერთი მე აქ 130 00:08:39,590 --> 00:08:42,740 და ახლა ჩვენ სვოპ. 131 00:08:42,740 --> 00:08:47,690 ასე რომ, თუ ეს იყო 5 და ეს იყო 4, 132 00:08:47,690 --> 00:08:57,150 შედეგად მასივი ექნება 5 აქ და 4 აქ. 133 00:08:57,150 --> 00:09:00,390 და ახლა ჩვენ აღვნიშნავთ, მარკერის აქ. 134 00:09:00,390 --> 00:09:05,770 ყველაფერი მარცხნივ აჩეხვა, 135 00:09:05,770 --> 00:09:15,160 და ყველაფერი უფლება unshuffled. 136 00:09:15,160 --> 00:09:17,260 და ახლა ჩვენ შეგვიძლია გავიმეოროთ პროცესში. 137 00:09:17,260 --> 00:09:25,210 ვირჩევთ შემთხვევითი ინდექსი შორის 1 და 20 არის. 138 00:09:25,210 --> 00:09:30,650 ამიტომ ვარაუდობენ, რომ ჩვენი ახალი მე აქ არის. 139 00:09:30,650 --> 00:09:39,370 ახლა ჩვენ სვოპ ამ მე ჩვენს მიმდინარე ახალ თანამდებობაზე აქ. 140 00:09:39,370 --> 00:09:44,790 ამიტომ ჩვენ შევცვალე უკან და მეოთხე მოსწონს ეს. 141 00:09:44,790 --> 00:09:51,630 ნება მომეცით ზრდიან კოდი რათა ის უფრო კონკრეტული. 142 00:09:51,630 --> 00:09:55,290 ჩვენ დავიწყებთ ჩვენი არჩევანი მე - 143 00:09:55,290 --> 00:09:58,370 ჩვენ დავიწყებთ მე გაუტოლდება 0, ჩვენ აირჩიოთ შემთხვევითი საიდან კ 144 00:09:58,370 --> 00:10:02,420 წელს unshuffled ნაწილი მასივი, მე რომ N-1. 145 00:10:02,420 --> 00:10:07,280 ასე რომ, თუ მე აქ, აირჩიოს შემთხვევითი ინდექსი შორის აქ და დანარჩენ მასივი, 146 00:10:07,280 --> 00:10:12,410 და ჩვენ სვოპ. 147 00:10:12,410 --> 00:10:17,550 ეს არის ყველა კოდი აუცილებელია shuffle თქვენი მასივი. 148 00:10:17,550 --> 00:10:21,670 ნებისმიერი კითხვები? 149 00:10:21,670 --> 00:10:25,530 >> ისე, ერთი საჭირო კითხვაზე, თუ რატომ არის ამ სწორი? 150 00:10:25,530 --> 00:10:28,360 რატომ არის ყველა permutation თანაბრად სავარაუდოდ? 151 00:10:28,360 --> 00:10:30,410 და მე არ გავლა მტკიცებულება, 152 00:10:30,410 --> 00:10:35,970 მაგრამ ბევრი პრობლემა კომპიუტერულ მეცნიერებაში შეიძლება დაადგინა მეშვეობით ინდუქციური. 153 00:10:35,970 --> 00:10:38,520 რამდენი თქვენგანი იცნობს ინდუქციური? 154 00:10:38,520 --> 00:10:40,590 Okay. ზემოთ. 155 00:10:40,590 --> 00:10:43,610 ასე რომ თქვენ შეგიძლიათ დაამტკიცოს სისწორეს ეს ალგორითმი უბრალო ინდუქციური, 156 00:10:43,610 --> 00:10:49,540 სადაც თქვენი ინდუქციური ჰიპოთეზა იქნებოდა, ვივარაუდოთ, რომ 157 00:10:49,540 --> 00:10:53,290 ჩემი shuffle ბრუნდება ყოველ permutation თანაბრად სავარაუდოდ 158 00:10:53,290 --> 00:10:56,120 მდე პირველი მე ელემენტებს. 159 00:10:56,120 --> 00:10:58,300 ახლა, განიხილოს i + 1. 160 00:10:58,300 --> 00:11:02,550 და სხვათა შორის, ავირჩიოთ ჩვენი ინდექსი j რომ სვოპ, 161 00:11:02,550 --> 00:11:05,230 ამ მივყავართ - და მაშინ შეიმუშაოს ინფორმაცია 162 00:11:05,230 --> 00:11:07,390 მინიმუმ სრული მტკიცებულება, ამიტომ ეს ალგორითმი ბრუნდება 163 00:11:07,390 --> 00:11:12,800 ყველა permutation ერთად თანაბრად სავარაუდოდ ალბათობა. 164 00:11:12,800 --> 00:11:15,940 >> ყველა უფლება, შემდეგი პრობლემა. 165 00:11:15,940 --> 00:11:19,170 ასე რომ "მოცემულ მასივი რიცხვებით, postive, ნულოვანი, უარყოფითი, 166 00:11:19,170 --> 00:11:21,290 დაწერეთ ფუნქცია, რომელიც ანგარიშობს მაქსიმალური თანხა 167 00:11:21,290 --> 00:11:24,720 ნებისმიერი continueous subarray of შეყვანის მასივი. " 168 00:11:24,720 --> 00:11:28,370 მაგალითად აქ არის, იმ შემთხვევაში, ყველა ნომრები პოზიტიური, 169 00:11:28,370 --> 00:11:31,320 შემდეგ გაკეთებული საუკეთესო არჩევანი მიიღოს მთელი მასივი. 170 00:11:31,320 --> 00:11:34,690 1, 2, 3, 4, შეადგენს 10. 171 00:11:34,690 --> 00:11:36,780 როდესაც თქვენ გარკვეული ნეგატივები იქ, 172 00:11:36,780 --> 00:11:38,690 ამ შემთხვევაში ჩვენ გვსურს მხოლოდ პირველი ორი 173 00:11:38,690 --> 00:11:44,590 რადგან არჩევის -1 და / ან -3 მოუტანს ჩვენი თანხა ქვემოთ. 174 00:11:44,590 --> 00:11:48,120 ზოგჯერ შეიძლება უნდა დაიწყოს შუა მასივი. 175 00:11:48,120 --> 00:11:53,500 ზოგჯერ ჩვენ გვინდა აირჩიოს არაფერი მოხვედრა, ეს იმისათვის, რომ არ მიიღოს არაფერი. 176 00:11:53,500 --> 00:11:56,490 და ზოგჯერ უმჯობესია მიიღოს შემოდგომაზე, 177 00:11:56,490 --> 00:12:07,510 რადგან რამ შემდეგ ეს სუპერ დიდი. ასე რომ ნებისმიერი იდეები? 178 00:12:07,510 --> 00:12:10,970 (სტუდენტი, გაუგებარია) >> Yeah. 179 00:12:10,970 --> 00:12:13,560 დავუშვათ, მე არ მიიღოს -1. 180 00:12:13,560 --> 00:12:16,170 მაშინ არც მე აირჩიოს 1,000 და 20,000, 181 00:12:16,170 --> 00:12:18,630 ან უბრალოდ აირჩიონ 3 მილიარდი. 182 00:12:18,630 --> 00:12:20,760 ისე, საუკეთესო არჩევანი, არის მიიღოს ყველა ნომრები. 183 00:12:20,760 --> 00:12:24,350 ეს -1, მიუხედავად უარყოფითი, 184 00:12:24,350 --> 00:12:31,340 მთელი თანხა უკეთესია იყო მე არ მიიღოს -1. 185 00:12:31,340 --> 00:12:36,460 ასე რომ ერთი რჩევა ვთქვი ადრე იყო სახელმწიფო ნათლად აშკარა 186 00:12:36,460 --> 00:12:40,540 და უხეში ძალის გადაწყვეტა პირველი. 187 00:12:40,540 --> 00:12:44,340 რა არის უხეში ძალის გადაწყვეტა ამ პრობლემის? ჰო? 188 00:12:44,340 --> 00:12:46,890 [Jane] ვფიქრობ, უხეში ძალის გადაწყვეტა 189 00:12:46,890 --> 00:12:52,600 იქნება დაამატოთ მდე ყველა შესაძლო კომბინაციები (გაუგებარია). 190 00:12:52,600 --> 00:12:58,250 [Yu] Okay. ამიტომ Jane იდეა არის მიიღოს ყველა შესაძლო - 191 00:12:58,250 --> 00:13:01,470 მე მის პერეფრაზირებას ვახდენ - არის მიიღოს ყველა შესაძლო უწყვეტი subarray, 192 00:13:01,470 --> 00:13:07,840 გამოთვლაც მისი თანხა და შემდეგ მიიღოს მაქსიმუმ ყველა შესაძლო უწყვეტი subarrays. 193 00:13:07,840 --> 00:13:13,310 რა უნიკალურ იდენტიფიკაციას subarray ჩემი შეყვანის მასივი? 194 00:13:13,310 --> 00:13:17,380 მსგავსად, რა ორი რამ მჭირდება? ჰო? 195 00:13:17,380 --> 00:13:19,970 (სტუდენტი, გაუგებარია) >> მარჯვენა. 196 00:13:19,970 --> 00:13:22,130 ქვედა შეკრული on ინდექსი და ზედა ბლოკნოტის ინდექსი 197 00:13:22,130 --> 00:13:28,300 ცალსახად განსაზღვრავს უწყვეტი subarray. 198 00:13:28,300 --> 00:13:31,400 [ქალი სტუდენტი] ვართ შეფასებისას ეს მასივი უნიკალური ნომრები? 199 00:13:31,400 --> 00:13:34,280 [Yu] მდებარ ამიტომ მისი საკითხი, ჩვენ ვთქვათ ჩვენი მასივი - 200 00:13:34,280 --> 00:13:39,000 ჩვენი მასივი უნიკალური ნომრები და პასუხი არ არის. 201 00:13:39,000 --> 00:13:43,390 >> თუ ჩვენ გამოვიყენებთ ჩვენი უხეში ძალის გადაწყვეტა, მაშინ დაწყება / ბოლომდე მაჩვენებლების 202 00:13:43,390 --> 00:13:47,200 ცალსახად განსაზღვრავს ჩვენი უწყვეტი subarray. 203 00:13:47,200 --> 00:13:51,680 ასე რომ, თუ ჩვენ iterate ყველა შესაძლო დაწყების entries, 204 00:13:51,680 --> 00:13:58,320 და სამუდამოდ ბოლომდე შესვლის> ან = დაიწყოს, და 00:14:05,570 თქვენ გამოთვლაც თანხა და შემდეგ ჩვენ ვიღებთ მაქსიმალური თანხა ჩვენ ვნახეთ ჯერჯერობით. 206 00:14:05,570 --> 00:14:07,880 ეს ნათელი? 207 00:14:07,880 --> 00:14:12,230 რა არის დიდი O ამ გამოსავალი? 208 00:14:12,230 --> 00:14:16,660 Timewise. 209 00:14:16,660 --> 00:14:18,860 არ საკმაოდ N ^ 2. 210 00:14:18,860 --> 00:14:25,250 გაითვალისწინეთ, რომ ჩვენ iterate საწყისი 0 to n, 211 00:14:25,250 --> 00:14:27,520 ასე რომ ერთი მარყუჟი. 212 00:14:27,520 --> 00:14:35,120 ჩვენ iterate ერთხელ თითქმის თავიდან ბოლომდე, მეორე loop. 213 00:14:35,120 --> 00:14:37,640 და ახლა, შიგნით რომ, ჩვენ უნდა შეაჯამოს ყველა ჩანაწერი, 214 00:14:37,640 --> 00:14:43,810 ასე რომ მეორე loop. ასე რომ ჩვენ გვაქვს სამი წყობილი ამისთვის მარყუჟების, N ^ 3. 215 00:14:43,810 --> 00:14:46,560 Okay. ეს მიდის როგორც ამოსავალი წერტილი. 216 00:14:46,560 --> 00:14:53,180 ჩვენი გამოსავალი არის უარესი N ^ 3. 217 00:14:53,180 --> 00:14:55,480 ამჯამად ყველას გვესმის უხეში ძალის გამოსავალი? 218 00:14:55,480 --> 00:14:59,950 >> Okay. უკეთესი გამოსავალი იყენებს იდეა მოუწოდა დინამიური პროგრამირების. 219 00:14:59,950 --> 00:15:03,040 თუ თქვენ მიიღოს CS124, რომელიც ალგორითმები და მონაცემთა სტრუქტურები, 220 00:15:03,040 --> 00:15:05,680 თქვენ გახდება ძალიან ნაცნობია ეს ტექნიკა. 221 00:15:05,680 --> 00:15:12,190 და იდეა, ცდილობენ დაამყარონ გადაწყვეტილებების პატარა პრობლემები პირველი. 222 00:15:12,190 --> 00:15:17,990 რას ვგულისხმობ ამ არის, ჩვენ გაკეთებული აქვს ფიქრი ორი რამ: დაწყება და დასასრული. 223 00:15:17,990 --> 00:15:29,340 და ეს შემაშფოთებელი. რა მოხდება, თუ ჩვენ თავს დააღწევდა ერთ იმ პარამეტრების? 224 00:15:29,340 --> 00:15:32,650 ერთი იდეა იმაში მდგომარეობს, - we're მოცემული ჩვენი ორიგინალური პრობლემა, 225 00:15:32,650 --> 00:15:37,470 იპოვოს მაქსიმალური თანხა ნებისმიერი subarray in Range [O, N-1]. 226 00:15:37,470 --> 00:15:47,400 და ახლა ჩვენ გვაქვს ახალი subproblem, სადაც ჩვენ ვიცით, ჩვენი მიმდინარე ინდექსი i, 227 00:15:47,400 --> 00:15:52,520 ჩვენ ვიცით, ჩვენ უნდა დავასკვნათ არსებობს. ჩვენი subarray უნდა დასრულდეს მიმდინარე ინდექსი. 228 00:15:52,520 --> 00:15:57,640 ასე დარჩენილი პრობლემა ისაა, სადაც უნდა დაიწყოს ჩვენი subarray? 229 00:15:57,640 --> 00:16:05,160 ამჯამად ამ აზრი? Okay. 230 00:16:05,160 --> 00:16:12,030 ამიტომ მე ამ კოდირებული up, და მოდით შევხედოთ რას ნიშნავს. 231 00:16:12,030 --> 00:16:16,230 In codirectory, არსებობს პროგრამის მოუწოდა subarray, 232 00:16:16,230 --> 00:16:19,470 და ეს ხდება რაოდენობის ნივთები, 233 00:16:19,470 --> 00:16:25,550 და ის დააბრუნებს მაქსიმალური subarray თანხა ჩემი აჩეხვა სიაში. 234 00:16:25,550 --> 00:16:29,920 ასე რომ, ამ შემთხვევაში, ჩვენი მაქსიმალური subarray არის 3. 235 00:16:29,920 --> 00:16:34,850 და ეს მიერ გადაღებული მხოლოდ გამოყენებით 2 და 1. 236 00:16:34,850 --> 00:16:38,050 მოდით გაუშვით ერთხელ. ასევე 3. 237 00:16:38,050 --> 00:16:40,950 მაგრამ ამ დროს, აღვნიშნავთ, თუ როგორ მივიღეთ 3. 238 00:16:40,950 --> 00:16:46,690 ჩვენ მივიღეთ - ჩვენ მხოლოდ მიიღოს 3 თვით 239 00:16:46,690 --> 00:16:49,980 რადგანაც ეს გარს ნეგატივები ორივე მხარეს, 240 00:16:49,980 --> 00:16:55,080 რაც მოუტანს თანხა <3. 241 00:16:55,080 --> 00:16:57,820 მოდით აწარმოებს წლის 10 საკითხი. 242 00:16:57,820 --> 00:17:03,200 ამჯერად ის 7, ვიღებთ წამყვანი 3 და 4. 243 00:17:03,200 --> 00:17:09,450 ამჯერად ეს 8 და ვიღებთ რომ ხდება 1, 4 და 3. 244 00:17:09,450 --> 00:17:16,310 ასე რომ გადმოგცეთ ინტუიცია, თუ როგორ შეგვიძლია გადავჭრათ ეს პრობლემა გარდაიქმნა, 245 00:17:16,310 --> 00:17:18,890 მოდით შევხედოთ ამ subarray. 246 00:17:18,890 --> 00:17:23,460 ჩვენ, ამ შეყვანის მასივი, და ვიცით, პასუხი არის 8. 247 00:17:23,460 --> 00:17:26,359 ჩვენ ვიღებთ 1, 4, და 3. 248 00:17:26,359 --> 00:17:29,090 მაგრამ მოდით შევხედოთ, თუ როგორ ჩვენ რეალურად მივიღეთ, რომ პასუხი. 249 00:17:29,090 --> 00:17:34,160 მოდით შევხედოთ მაქსიმალური subarray რომ დასრულდა თითოეულ ამ მაჩვენებლების. 250 00:17:34,160 --> 00:17:40,780 რა არის მაქსიმალური subarray რომ უნდა დასრულდეს პირველი პოზიცია? 251 00:17:40,780 --> 00:17:46,310 [სტუდენტური] Zero. >> Zero. უბრალოდ არ მიიღოს -5. 252 00:17:46,310 --> 00:17:50,210 აქ იქნება 0 ისევე. ჰო? 253 00:17:50,210 --> 00:17:56,470 (სტუდენტი, გაუგებარია) 254 00:17:56,470 --> 00:17:58,960 [Yu] ოჰ, უკაცრავად, ეს არის -3. 255 00:17:58,960 --> 00:18:03,220 ასე რომ, ეს არის 2, ეს არის -3. 256 00:18:03,220 --> 00:18:08,690 Okay. ასე -4, რა მაქსიმალური subarray ბოლოში რომ თანამდებობა 257 00:18:08,690 --> 00:18:12,910 სად -4 არის? ნულოვანი. 258 00:18:12,910 --> 00:18:22,570 ერთი? 1, 5, 8. 259 00:18:22,570 --> 00:18:28,060 ახლა, მე უნდა დასრულდეს დროს ადგილი, სადაც -2 არის. 260 00:18:28,060 --> 00:18:39,330 ასე რომ, 6, 5, 7, და ბოლოს ერთი არის 4. 261 00:18:39,330 --> 00:18:43,480 იცის, რომ ეს არის ჩემი მასალა 262 00:18:43,480 --> 00:18:48,130 ამისთვის გარდაიქმნება პრობლემა, სადაც მე უნდა დასრულდეს ყოველ ამ მაჩვენებლების, 263 00:18:48,130 --> 00:18:51,410 მაშინ ჩემი საბოლოო პასუხი მხოლოდ, მიიღოს Sweep მასშტაბით, 264 00:18:51,410 --> 00:18:53,580 და მიიღოს მაქსიმალური რაოდენობა. 265 00:18:53,580 --> 00:18:55,620 ასე რომ ამ შემთხვევაში ეს 8. 266 00:18:55,620 --> 00:19:00,010 ეს გულისხმობს იმას, რომ მაქსიმალური subarray დამთავრდა ამ ინდექსი, 267 00:19:00,010 --> 00:19:04,970 და დაიწყო სადღაც სანამ. 268 00:19:04,970 --> 00:19:09,630 ამჯამად ყველას გვესმის ამ ტრანსფორმირებული subarray? 269 00:19:09,630 --> 00:19:22,160 >> Okay. კარგად, მოდით გაერკვნენ რეციდივი ამისათვის. 270 00:19:22,160 --> 00:19:27,990 განვიხილოთ მხოლოდ პირველი რამდენიმე entries. 271 00:19:27,990 --> 00:19:35,930 ასე რომ აქ იყო 0, 0, 0, 1, 5, 8. 272 00:19:35,930 --> 00:19:39,790 და მაშინ იყო -2 აქ, და რომ შემოიყვანა ქვემოთ 6. 273 00:19:39,790 --> 00:19:50,800 ასე რომ, თუ მოვუწოდებ შესვლის პოზიციაში მე subproblem (I), 274 00:19:50,800 --> 00:19:54,910 როგორ გამოვიყენო პასუხი წინა subproblem 275 00:19:54,910 --> 00:19:59,360 პასუხის გაცემა ამ subproblem? 276 00:19:59,360 --> 00:20:04,550 თუ გავითვალისწინებთ, ასე ვთქვათ, ამ ჩანაწერში. 277 00:20:04,550 --> 00:20:09,190 როგორ შემიძლია გამოთვლაც პასუხი 6 by ეძებს 278 00:20:09,190 --> 00:20:18,780 კომბინაცია ამ array და პასუხები წინა subproblems ამ მასივი? დიახ? 279 00:20:18,780 --> 00:20:22,800 [ქალი სტუდენტი] თქვენ მიიღოს მასივი თანხები 280 00:20:22,800 --> 00:20:25,430 წელს თანამდებობა უფლება ადრე, ასე რომ 8, 281 00:20:25,430 --> 00:20:32,170 და მაშინ დაამატოთ მიმდინარე subproblem. 282 00:20:32,170 --> 00:20:36,460 [Yu] ასე მისი წინადადება არის შევხედოთ ამ ორი ნომერი, 283 00:20:36,460 --> 00:20:40,090 ეს რაოდენობა და ეს რიცხვი. 284 00:20:40,090 --> 00:20:50,130 ასე რომ, ეს 8 ეხება პასუხს subproblem (I - 1). 285 00:20:50,130 --> 00:20:57,300 და მოდით მოვუწოდებთ ჩემი შეყვანის მასივი ა 286 00:20:57,300 --> 00:21:01,470 იმისათვის, რომ იპოვოს მაქსიმალური subarray რომ დამთავრდა პოზიციაში მე, 287 00:21:01,470 --> 00:21:03,980 მე ორი არჩევანი: შემიძლია ან გაგრძელდება subarray 288 00:21:03,980 --> 00:21:09,790 რომ დასრულდა წინა ინდექსი, დაიწყოს ახალი მასივი. 289 00:21:09,790 --> 00:21:14,190 მე რომ გააგრძელოს subarray რომ დაიწყო წინა ინდექსი, 290 00:21:14,190 --> 00:21:19,260 მაშინ მაქსიმალური თანხა შემიძლია მისაღწევად არის პასუხი წინა subproblem 291 00:21:19,260 --> 00:21:24,120 პლუს მიმდინარე მასივი ჩანაწერს. 292 00:21:24,120 --> 00:21:27,550 მაგრამ, მე ასევე აქვს არჩევანი დაწყებული ახალი subarray, 293 00:21:27,550 --> 00:21:30,830 ამ შემთხვევაში თანხა 0. 294 00:21:30,830 --> 00:21:42,860 ასე რომ პასუხი არის max სულ 0, subproblem i - 1, პლუს მიმდინარე მასივი ჩანაწერს. 295 00:21:42,860 --> 00:21:46,150 ამჯამად ამ რეციდივი აქვს აზრი? 296 00:21:46,150 --> 00:21:50,840 ჩვენი რეციდივი, როგორც ჩვენ უბრალოდ აღმოაჩინეს, არის subproblem მე 297 00:21:50,840 --> 00:21:54,740 უდრის მაქსიმუმ წინა subproblem პლუს ჩემი მიმდინარე მასივი შესვლის, 298 00:21:54,740 --> 00:22:01,490 რაც იმას ნიშნავს, გავაგრძელოთ წინა subarray, 299 00:22:01,490 --> 00:22:07,250 ან 0, დაიწყოს ახალი subarray ჩემს მიმდინარე ინდექსი. 300 00:22:07,250 --> 00:22:10,060 და კიდევ ავაშენეთ up ამ მაგიდასთან გადაწყვეტილებები, მაშინ ჩვენი საბოლოო პასუხი, 301 00:22:10,060 --> 00:22:13,950 უბრალოდ ხაზოვანი Sweep მასშტაბით subproblem მასივი 302 00:22:13,950 --> 00:22:19,890 და მიიღოს მაქსიმალური რაოდენობა. 303 00:22:19,890 --> 00:22:23,330 ეს არის ზუსტი განხორციელება, რაც მე უბრალოდ განაცხადა. 304 00:22:23,330 --> 00:22:27,320 ამიტომ, ჩვენ შევქმნათ ახალი subproblem მასივი, subproblems. 305 00:22:27,320 --> 00:22:32,330 პირველადი შემოსვლისათვის არის ან 0 ან პირველადი შემოსვლისათვის, მაქსიმუმ ორი. 306 00:22:32,330 --> 00:22:35,670 და დანარჩენი subproblems 307 00:22:35,670 --> 00:22:39,810 ჩვენ ვიყენებთ ზუსტი რეციდივი ჩვენ უბრალოდ აღმოაჩინეს. 308 00:22:39,810 --> 00:22:49,960 ახლა ჩვენ გამოთვლაც მაქსიმალური ჩვენი subproblems მასივი, და ეს ჩვენი საბოლოო პასუხი. 309 00:22:49,960 --> 00:22:54,130 >> ასე რომ რა ზომის არიან ჩვენ გამოყენებით ამ ალგორითმი? 310 00:22:54,130 --> 00:23:01,470 თუ თქვენ მხოლოდ მიღებული CS50, მაშინ თქვენ ალბათ არ უმსჯელია სივრცეში ძალიან. 311 00:23:01,470 --> 00:23:07,750 ისე, ერთი რამ აღვნიშნო არის ის, რომ დავურეკე malloc აქ ზომა n. 312 00:23:07,750 --> 00:23:13,590 რას გთავაზობთ თქვენ? 313 00:23:13,590 --> 00:23:17,450 ეს ალგორითმი იყენებს წრფივ სივრცეში. 314 00:23:17,450 --> 00:23:21,030 გავაკეთოთ უკეთესი? 315 00:23:21,030 --> 00:23:30,780 არის რამე რომ თქვენ შეამჩნევთ, რომ არის ზედმეტი გამოთვლაც საბოლოო პასუხი? 316 00:23:30,780 --> 00:23:33,290 ვფიქრობ უკეთესი კითხვაზე, თუ რა ინფორმაციას 317 00:23:33,290 --> 00:23:40,680 ჩვენ არ უნდა შეასრულოს ყველა გზა ბოლომდე? 318 00:23:40,680 --> 00:23:44,280 ახლა, თუ შევხედავთ ამ ორი ხაზი, 319 00:23:44,280 --> 00:23:47,720 ჩვენ მხოლოდ აინტერესებს წინა subproblem, 320 00:23:47,720 --> 00:23:50,910 და ჩვენ მხოლოდ აინტერესებს მაქსიმალური ჩვენ ოდესმე მინახავს აქამდე. 321 00:23:50,910 --> 00:23:53,610 გამოთვლაც ჩვენი საბოლოო პასუხი, ჩვენ არ გვჭირდება მთელი მასივი. 322 00:23:53,610 --> 00:23:57,450 ჩვენ მხოლოდ გვჭირდება ბოლო ნომერი, ბოლო ორი ნომერი. 323 00:23:57,450 --> 00:24:02,630 ბოლო ნომრის subproblem მასივი, და ბოლო ნომერი, მაქსიმუმ. 324 00:24:02,630 --> 00:24:07,380 ასე რომ, ფაქტობრივად, ჩვენ შეგვიძლია დაუკრავენ ამ მარყუჟების ერთად 325 00:24:07,380 --> 00:24:10,460 და აქედან ხაზოვანი სივრცეში მუდმივი სივრცეში. 326 00:24:10,460 --> 00:24:15,830 აქტუალური თანხა ჯერჯერობით, აქ, ცვლის როლი subproblem, ჩვენი subproblem მასივი. 327 00:24:15,830 --> 00:24:20,020 ასე რომ მიმდინარე თანხა, ჯერჯერობით, არის პასუხი წინა subproblem. 328 00:24:20,020 --> 00:24:23,450 და რომ თანხა, ჯერჯერობით, იღებს ადგილი ჩვენი მაქს. 329 00:24:23,450 --> 00:24:28,100 ჩვენ გამოთვლაც მაქსიმალური როგორც ჩვენ წავიდეთ ერთად. 330 00:24:28,100 --> 00:24:30,890 ამიტომ ჩვენ აქედან ხაზოვანი სივრცეში მუდმივი სივრცეში, 331 00:24:30,890 --> 00:24:36,650 და ჩვენ ასევე გვაქვს ხაზოვანი გადაწყვეტა ჩვენი subarray პრობლემა. 332 00:24:36,650 --> 00:24:40,740 >> ამ სახის კითხვებით მიიღებთ დროს ინტერვიუში. 333 00:24:40,740 --> 00:24:44,450 რა არის დრო სირთულის, რა არის სივრცე სირთულის? 334 00:24:44,450 --> 00:24:50,600 შეგიძლიათ უკეთესი? არსებობს რამ, რომ არიან ზედმეტი შენარჩუნება გარშემო? 335 00:24:50,600 --> 00:24:55,270 მე ამ ითვალისწინებდეს ანალიზი, რომ თქვენ უნდა მიიღოს საკუთარ 336 00:24:55,270 --> 00:24:57,400 როგორც თქვენ სამუშაო მეშვეობით ამ პრობლემების. 337 00:24:57,400 --> 00:25:01,710 ყოველთვის ეკითხება თავის "გავაკეთო უკეთესი?" 338 00:25:01,710 --> 00:25:07,800 ფაქტობრივად, გავაკეთოთ უკეთესი ვიდრე ეს? 339 00:25:07,800 --> 00:25:10,730 სახის ხრიკი კითხვა. თქვენ არ შეგიძლიათ, რადგან თქვენ უნდა 340 00:25:10,730 --> 00:25:13,590 მინიმუმ წაიკითხა შეყვანის პრობლემას. 341 00:25:13,590 --> 00:25:15,570 ასე რომ ის ფაქტი, რომ თქვენ უნდა მინიმუმ წაიკითხა შეყვანის პრობლემას 342 00:25:15,570 --> 00:25:19,580 ნიშნავს, რომ თქვენ ვერ უკეთესად ხაზოვანი დროს, 343 00:25:19,580 --> 00:25:22,870 და ვერ უკეთესად, ვიდრე მუდმივი სივრცეში. 344 00:25:22,870 --> 00:25:27,060 ასე რომ, ეს, ფაქტობრივად, საუკეთესო გამოსავალი ამ პრობლემას. 345 00:25:27,060 --> 00:25:33,040 კითხვები? Okay. 346 00:25:33,040 --> 00:25:35,190 >> საფონდო ბაზრის პრობლემა: 347 00:25:35,190 --> 00:25:38,350 "იმის გათვალისწინებით მასივი n რიცხვებით, დადებითი, ნულოვანი, ან უარყოფითი, 348 00:25:38,350 --> 00:25:41,680 რომ წარმოადგენენ ფასი საფონდო მეტი N დღით, 349 00:25:41,680 --> 00:25:44,080 წერენ ფუნქცია გამოთვლაც მაქსიმალური მოგება შეგიძლიათ 350 00:25:44,080 --> 00:25:49,350 იმის გათვალისწინებით, რომ თქვენ შეიძინოთ და გაყიდოს ზუსტად 1 საფონდო ფარგლებში ამ N დღის ვადაში. " 351 00:25:49,350 --> 00:25:51,690 არსებითად, ჩვენ გვინდა ყიდვა დაბალია, გაყიდოს მაღალი. 352 00:25:51,690 --> 00:25:58,580 და გვინდა გაერკვნენ საუკეთესო მოგება შეიძლება გავაკეთოთ. 353 00:25:58,580 --> 00:26:11,500 ბრუნდება ჩემი წვერი, რა არის მაშინვე ნათელი, მარტივი პასუხი, მაგრამ ნელი? 354 00:26:11,500 --> 00:26:17,690 დიახ? (სტუდენტი, გაუგებარია) >> დიახ. 355 00:26:17,690 --> 00:26:21,470 >> ასე რომ უბრალოდ თუმცა და შევხედოთ საფონდო ფასები 356 00:26:21,470 --> 00:26:30,550 ყოველ მომენტში, (გაუგებარია). 357 00:26:30,550 --> 00:26:33,990 [Yu] Okay, ასე რომ მისი გადაწყვეტა - მისი წინადადებით Computing 358 00:26:33,990 --> 00:26:37,380 ყველაზე დაბალი და კომპიუტერული უმაღლესი სულაც არ იმუშავებს 359 00:26:37,380 --> 00:26:42,470 რადგან უმაღლეს შეიძლება მოხდეს ადრე ყველაზე დაბალი. 360 00:26:42,470 --> 00:26:47,340 რა არის უხეში ძალის აღნიშნული პრობლემის მოსაგვარებლად? 361 00:26:47,340 --> 00:26:53,150 რა არის ორი რამ, რომ მე უნდა ცალსახად განსაზღვრავს მოგების მე? მარჯვენა. 362 00:26:53,150 --> 00:26:59,410 უხეში ძალის გამოსავალი - Oh, ამიტომ, გიორგის წინადადება არის ჩვენ მხოლოდ ორი დღის განმავლობაში 363 00:26:59,410 --> 00:27:02,880 to ცალსახად განსაზღვრავს მოგების იმ ორი დღის განმავლობაში. 364 00:27:02,880 --> 00:27:06,660 ამიტომ, ჩვენ გამოთვლაც ყველა წყვილი, როგორიცაა ყიდვა / გაყიდვის, 365 00:27:06,660 --> 00:27:12,850 გამოთვლაც მოგება, რომელიც შეიძლება უარყოფითი ან დადებითი ან ნულოვანი. 366 00:27:12,850 --> 00:27:18,000 გამოთვლაც მაქსიმალური მოგება რომ ჩვენ შემდეგ iterating ყველა წყვილი დღის განმავლობაში. 367 00:27:18,000 --> 00:27:20,330 ეს იქნება ჩვენი საბოლოო პასუხი. 368 00:27:20,330 --> 00:27:25,730 და რომ გამოსავალი იქნება O (N ^ 2), რადგან არ არსებობს N აირჩიოს ორი წყვილი - 369 00:27:25,730 --> 00:27:30,270 დღეში, რომ თქვენ შეგიძლიათ აირჩიოთ შორის დასასრულს დღის განმავლობაში. 370 00:27:30,270 --> 00:27:32,580 Okay, ასე არ ვაპირებ წასვლა მეტი უხეში ძალის გამოსავალი აქ. 371 00:27:32,580 --> 00:27:37,420 მე ვაპირებ გითხრათ, რომ არსებობს n შესვლა N გადაწყვეტა. 372 00:27:37,420 --> 00:27:45,550 რა ალგორითმი გაქვთ გაკეთებული ვიცი, რომ არის N შესვლა N? 373 00:27:45,550 --> 00:27:50,730 ეს არ შეასრულა კითხვაზე. 374 00:27:50,730 --> 00:27:54,790 >> შერწყმა ჯიშია. შერწყმა დალაგების არის N შესვლა N, 375 00:27:54,790 --> 00:27:57,760 და ფაქტობრივად, ერთი გზა პრობლემის მოსაგვარებლად არის გამოიყენოს 376 00:27:57,760 --> 00:28:04,400 შერწყმა დალაგების სახის იდეა მოუწოდა, ზოგადად, გათიშე და დაიპყროთ. 377 00:28:04,400 --> 00:28:07,570 და იდეა ასეთია. 378 00:28:07,570 --> 00:28:12,400 გსურთ გამოთვლაც საუკეთესო ყიდვა / გაყიდვის წყვილი მარცხენა ნახევარში. 379 00:28:12,400 --> 00:28:16,480 მოძებნა საუკეთესო მოგება შეგიძლიათ, მხოლოდ პირველი n ორი დღის განმავლობაში. 380 00:28:16,480 --> 00:28:19,780 მაშინ გსურთ oompute საუკეთესო ყიდვა / გაყიდვის წყვილი მარჯვენა ნახევარში, 381 00:28:19,780 --> 00:28:23,930 ასე ბოლო N ორი დღის განმავლობაში. 382 00:28:23,930 --> 00:28:32,400 და ახლა კითხვა არის, როგორ უნდა შერწყმა ამ გადაწყვეტილებების უკან ერთად? 383 00:28:32,400 --> 00:28:36,320 დიახ? (სტუდენტი, გაუგებარია) 384 00:28:36,320 --> 00:28:49,890 >> Okay. ნება მომეცით, შევაჩერო Picture. 385 00:28:49,890 --> 00:29:03,870 დიახ? (გიორგი, გაუგებარია) 386 00:29:03,870 --> 00:29:06,450 >> ზუსტად. გიორგის გამოსავალი არის სწორედ. 387 00:29:06,450 --> 00:29:10,040 ამიტომ მისი წინადადება არის, პირველ გამოთვლაც საუკეთესო ყიდვა / გაყიდვის წყვილი, 388 00:29:10,040 --> 00:29:16,050 და რომ ხდება მარცხენა ნახევარში, მოდით მოვუწოდებთ, რომ მარცხენა დატოვა. 389 00:29:16,050 --> 00:29:20,790 საუკეთესო ყიდვა / გაყიდვის წყვილი რომ გვხვდება მარჯვენა ნახევარში. 390 00:29:20,790 --> 00:29:25,180 მაგრამ თუ ჩვენ მხოლოდ შედარებით ეს ორი ნომერი, ჩვენ დაკარგული შემთხვევაში 391 00:29:25,180 --> 00:29:30,460 სად ვყიდულობთ აქ და გაყიდოს სადღაც მარჯვენა ნახევარში. 392 00:29:30,460 --> 00:29:33,810 ჩვენ ვყიდულობთ in მარცხენა ნახევარში, გაყიდვა მარჯვენა ნახევარში. 393 00:29:33,810 --> 00:29:38,490 და საუკეთესო გზა გამოთვლაც საუკეთესო ყიდვა / გაყიდვის წყვილი რომელიც მოიცავს ორივე halves 394 00:29:38,490 --> 00:29:43,480 არის გამოთვლაც მინიმალური აქ და გამოთვლაც მაქსიმალური აქ 395 00:29:43,480 --> 00:29:45,580 და მიიღოს მათი განსხვავება. 396 00:29:45,580 --> 00:29:50,850 ასე რომ ორ შემთხვევაში, როდესაც ყიდვა / გაყიდვის წყვილი ხდება მხოლოდ აქ, 397 00:29:50,850 --> 00:30:01,910 მარტო აქ, ან ორივე halves განისაზღვრება ამ სამი ნომრები. 398 00:30:01,910 --> 00:30:06,450 ასე რომ ჩვენი ალგორითმი შერწყმა ჩვენი გადაწყვეტილებები უკან ერთად, 399 00:30:06,450 --> 00:30:08,350 ჩვენ გვინდა გამოთვლაც საუკეთესო ყიდვა / გაყიდვის წყვილი 400 00:30:08,350 --> 00:30:13,120 სად ვყიდულობთ მარცხენა ნახევარში და გაყიდოს მარჯვენა ნახევარში. 401 00:30:13,120 --> 00:30:16,740 და საუკეთესო გზა ამის გაკეთება არის გამოთვლაც ყველაზე დაბალ ფასად წლის პირველ ნახევარში, 402 00:30:16,740 --> 00:30:20,360 უმაღლესი ფასი მარჯვენა ნახევარში, და მიიღოს მათი განსხვავება. 403 00:30:20,360 --> 00:30:25,390 შედეგად სამი მოგება, ამ სამი რიცხვი, თქვენ მიიღოს მაქსიმუმ სამი, 404 00:30:25,390 --> 00:30:32,720 და ეს საუკეთესო მოგება შეგიძლიათ ამ პირველი და ბოლოს დღის განმავლობაში. 405 00:30:32,720 --> 00:30:36,940 აქ მნიშვნელოვანი ხაზები წითელი. 406 00:30:36,940 --> 00:30:41,160 ეს არის რეკურსიული ზარის გამოთვლაც პასუხი მარცხენა ნახევარში. 407 00:30:41,160 --> 00:30:44,760 ეს არის რეკურსიული ზარის გამოთვლაც პასუხი მარჯვენა ნახევარში. 408 00:30:44,760 --> 00:30:50,720 ეს ორი მარყუჟების გამოთვლაც min და max მარცხენა და მარჯვენა ნახევარში, შესაბამისად. 409 00:30:50,720 --> 00:30:54,970 ახლა გამოთვლაც მოგება რომელიც მოიცავს ორივე halves, 410 00:30:54,970 --> 00:31:00,530 და საბოლოო პასუხი არის მაქსიმალური ამ სამი. 411 00:31:00,530 --> 00:31:04,120 Okay. 412 00:31:04,120 --> 00:31:06,420 >> ასე რომ, დარწმუნებული ვარ, რომ ჩვენ გვაქვს ალგორითმი, მაგრამ უფრო დიდი კითხვა არის, 413 00:31:06,420 --> 00:31:08,290 რა არის დრო სირთულის ამ? 414 00:31:08,290 --> 00:31:16,190 და მიზეზი, რის გამოც ვთქვი შერწყმა დალაგების ის არის, რომ ამ ფორმით დაყოფის პასუხი 415 00:31:16,190 --> 00:31:19,200 ორ და შემდეგ შერწყმის ჩვენი გადაწყვეტილებები უკან ერთად 416 00:31:19,200 --> 00:31:23,580 სწორედ ფორმით შერწყმა ჯიშია. 417 00:31:23,580 --> 00:31:33,360 ნება მომეცით გავლა ხანგრძლივობა. 418 00:31:33,360 --> 00:31:41,340 თუ ჩვენ განსაზღვრული ფუნქცია t (N) უნდა იყოს მთელი რიგი ზომების 419 00:31:41,340 --> 00:31:50,010 ამისთვის N დღით, 420 00:31:50,010 --> 00:31:54,350 ჩვენი ორი რეკურსიული მოუწოდებს 421 00:31:54,350 --> 00:32:00,460 მათ ყოველ აპირებს ეღირება T (n / 2), 422 00:32:00,460 --> 00:32:03,540 და არსებობს ორი მოუწოდებს. 423 00:32:03,540 --> 00:32:10,020 ახლა მე უნდა გამოთვლაც მინიმუმ მარცხენა ნახევარში, 424 00:32:10,020 --> 00:32:17,050 რაც შემიძლია in N / 2 ახლა, პლუს მაქსიმუმ მარჯვენა ნახევარში. 425 00:32:17,050 --> 00:32:20,820 ასე რომ, ეს უბრალოდ n. 426 00:32:20,820 --> 00:32:25,050 და მერე პლუს რამდენიმე მუდმივი მუშაობა. 427 00:32:25,050 --> 00:32:27,770 და ეს არ განმეორდეს განტოლება 428 00:32:27,770 --> 00:32:35,560 სწორედ რეციდივი განტოლება ამისთვის შერწყმა ჯიშია. 429 00:32:35,560 --> 00:32:39,170 და ჩვენ ყველამ ვიცით, რომ შერწყმა დალაგების არის N შესვლა N დრო. 430 00:32:39,170 --> 00:32:46,880 ამიტომ, ჩვენი ალგორითმი ასევე n შესვლა N დრო. 431 00:32:46,880 --> 00:32:52,220 ამჯამად ამ iteration აზრი? 432 00:32:52,220 --> 00:32:55,780 უბრალოდ მოკლე recap ამ: 433 00:32:55,780 --> 00:32:59,170 T (n) არის მთელი რიგი ზომების გამოთვლაც მაქსიმალური მოგება 434 00:32:59,170 --> 00:33:02,750 მეტი კურსი N დღით. 435 00:33:02,750 --> 00:33:06,010 გზა ჩვენ გაყოფილი up ჩვენი რეკურსიული მოუწოდებს 436 00:33:06,010 --> 00:33:11,980 არის დარეკვით ჩვენი გამოსავალი პირველ N / 2 დღე, 437 00:33:11,980 --> 00:33:14,490 ისე, რომ ერთი ზარი, 438 00:33:14,490 --> 00:33:16,940 და მაშინ ჩვენ მოვუწოდებთ კვლავ მეორე ნახევარში. 439 00:33:16,940 --> 00:33:20,440 ასე რომ ორი მოუწოდებს. 440 00:33:20,440 --> 00:33:25,310 და მაშინ ჩვენ მინიმალური მარცხენა ნახევარში, რომელიც ჩვენ შეგვიძლია გავაკეთოთ ხაზოვანი დროს, 441 00:33:25,310 --> 00:33:29,010 იპოვოს მაქსიმუმ მარჯვენა ნახევარში, რომელიც ჩვენ შეგვიძლია გავაკეთოთ ხაზოვანი დრო. 442 00:33:29,010 --> 00:33:31,570 ამიტომ N / 2 + N / 2 მხოლოდ n. 443 00:33:31,570 --> 00:33:36,020 მაშინ ჩვენ გვაქვს მუდმივი მუშაობა, რომელიც მოსწონს აკეთებს არითმეტიკული. 444 00:33:36,020 --> 00:33:39,860 ეს რეციდივი განტოლება არის ზუსტად რეციდივი განტოლება ამისთვის შერწყმა ჯიშია. 445 00:33:39,860 --> 00:33:55,490 აქედან გამომდინარე ჩვენი shuffle ალგორითმი ასევე N შეხვიდეთ n. 446 00:33:55,490 --> 00:33:58,520 ასე რომ რა ზომის არიან ჩვენ გამოყენებით? 447 00:33:58,520 --> 00:34:04,910 მოდით დავუბრუნდეთ კოდი. 448 00:34:04,910 --> 00:34:09,420 >> უკეთესი შეკითხვა, რამდენი დასტის ფარგლებში ჩვენ ოდესმე აქვს ნებისმიერ მოცემულ მომენტში? 449 00:34:09,420 --> 00:34:11,449 მას შემდეგ, რაც ჩვენ გამოყენებით უკან, 450 00:34:11,449 --> 00:34:23,530 პუნქტების დასტის ფარგლებში განსაზღვრავს ჩვენი სივრცის გამოყენება. 451 00:34:23,530 --> 00:34:29,440 განვიხილოთ n = 8. 452 00:34:29,440 --> 00:34:36,889 ჩვენ მოვუწოდებთ shuffle წლის 8, 453 00:34:36,889 --> 00:34:41,580 რომელიც მოვუწოდებთ shuffle წლის პირველი ოთხი entries, 454 00:34:41,580 --> 00:34:46,250 რომელიც მოვუწოდებთ shuffle პირველ ორ entries. 455 00:34:46,250 --> 00:34:51,550 ასე რომ ჩვენი დასტის არის - ეს არის ჩვენი Stack. 456 00:34:51,550 --> 00:34:54,980 და მაშინ ჩვენ მოვუწოდებთ shuffle კვლავ 1, 457 00:34:54,980 --> 00:34:58,070 და ეს რა არის ჩვენი ბაზის შემთხვევაში არის, ამიტომ ჩვენ დაბრუნებას დაუყოვნებლივ. 458 00:34:58,070 --> 00:35:04,700 ჩვენ ოდესმე მეტი გვაქვს ამ ბევრი დასტის ფარგლებში? 459 00:35:04,700 --> 00:35:08,880 პოსტები გამო ყოველ ჯერზე ჩვენ გავაკეთებთ invocation, 460 00:35:08,880 --> 00:35:10,770 რეკურსიული invocation to shuffle, 461 00:35:10,770 --> 00:35:13,950 ჩვენ ყოფს ჩვენს ზომა ნახევარ. 462 00:35:13,950 --> 00:35:17,020 ასე რომ მაქსიმალური რაოდენობის დასტის ფარგლებში ჩვენ ოდესმე აქვს ნებისმიერ მოცემულ მომენტში 463 00:35:17,020 --> 00:35:28,460 არის ბრძანებით შესვლა N დასტის ფარგლებში. 464 00:35:28,460 --> 00:35:42,460 თითოეული დასტის ჩარჩო აქვს მუდმივი სივრცეში, 465 00:35:42,460 --> 00:35:44,410 და ამიტომ საერთო რაოდენობის სივრცეში, 466 00:35:44,410 --> 00:35:49,240 მაქსიმალური თანხა სივრცეში ოდესმე გამოიყენოს არის O (log N) კოსმოსური 467 00:35:49,240 --> 00:36:03,040 სადაც n დღეების რაოდენობა. 468 00:36:03,040 --> 00:36:07,230 >> ახლა, ყოველთვის ჰკითხეთ საკუთარ თავს ", გავაკეთოთ უკეთესი?" 469 00:36:07,230 --> 00:36:12,390 კერძოდ, შეგვიძლია შეამციროს ეს პრობლემა ჩვენ უკვე მოგვარებული? 470 00:36:12,390 --> 00:36:20,040 მინიშნება: ჩვენ მხოლოდ განიხილეს ორ სხვა პრობლემების წინაშე ამ და ეს არ იქნება shuffle. 471 00:36:20,040 --> 00:36:26,200 ჩვენ შეგიძლიათ დააკონვერტიროთ ამ საფონდო პრობლემა შევიდა მაქსიმალური subarray პრობლემა. 472 00:36:26,200 --> 00:36:40,100 როგორ შეგვიძლია ამის გაკეთება? 473 00:36:40,100 --> 00:36:42,570 ერთი თქვენგანი? ემის? 474 00:36:42,570 --> 00:36:47,680 (ემის, გაუგებარია) 475 00:36:47,680 --> 00:36:53,860 [Yu] ზუსტად. 476 00:36:53,860 --> 00:36:59,940 ამიტომ მაქსიმალური subarray პრობლემა, 477 00:36:59,940 --> 00:37:10,610 ჩვენ ვეძებთ თანხა მეტი უწყვეტი subarray. 478 00:37:10,610 --> 00:37:16,230 და ემის წინადადება შეეხება აქციების პრობლემა, 479 00:37:16,230 --> 00:37:30,720 განიხილოს ცვლილებები, ან deltas. 480 00:37:30,720 --> 00:37:37,440 და სურათს ეს - ეს არის ფასი საფონდო, 481 00:37:37,440 --> 00:37:42,610 მაგრამ თუ ავიღეთ სხვაობა თითოეული ზედიზედ დღე - 482 00:37:42,610 --> 00:37:45,200 ამიტომ ჩვენ ვხედავთ, რომ მაქსიმალური ფასი, მაქსიმალური მოგება შეგვეძლო მიიღოს 483 00:37:45,200 --> 00:37:50,070 არის თუ ვყიდულობთ აქ და გაყიდოს აქ. 484 00:37:50,070 --> 00:37:54,240 მაგრამ მოდით შევხედოთ უწყვეტი - მოდით შევხედოთ subarray პრობლემა. 485 00:37:54,240 --> 00:38:02,510 ასე რომ, ჩვენ შეგვიძლია - აპირებს აქედან აქ, 486 00:38:02,510 --> 00:38:08,410 ჩვენ გვაქვს პოზიტიური ცვლილება, და შემდეგ აპირებს აქედან აქ გვაქვს უარყოფითი ცვლილება. 487 00:38:08,410 --> 00:38:14,220 თუმცა, შემდეგ აპირებს აქედან აქ ჩვენ გვაქვს უზარმაზარი პოზიტიური ცვლილება. 488 00:38:14,220 --> 00:38:20,930 და ეს ცვლილებები, რომ ჩვენ გვინდა შევაჯამოთ მისაღებად ჩვენი საბოლოო მოგება. 489 00:38:20,930 --> 00:38:25,160 შემდეგ ჩვენ უფრო მეტი უარყოფითი ცვლილებები აქ. 490 00:38:25,160 --> 00:38:29,990 გასაღები შემცირების ჩვენი საფონდო პრობლემა ჩვენს მაქსიმალური subarray პრობლემა 491 00:38:29,990 --> 00:38:36,630 არის განიხილოს deltas შორის დღით. 492 00:38:36,630 --> 00:38:40,630 ამიტომ, ჩვენ შევქმნით ახალ მასივი მოუწოდა deltas, 493 00:38:40,630 --> 00:38:43,000 ინიციალიზაცია პირველადი შემოსვლისათვის იყოს 0, 494 00:38:43,000 --> 00:38:46,380 და მაშინ თითოეული დელტა (I), ნება რომ იყოს სხვაობა 495 00:38:46,380 --> 00:38:52,830 ჩემი შეყვანის array (I), და array (I - 1). 496 00:38:52,830 --> 00:38:55,530 მაშინ ჩვენ მოვუწოდებთ ჩვენი რუტინული პროცედურა მაქსიმალური subarray 497 00:38:55,530 --> 00:39:01,500 გადადის დელტა ს მასივი. 498 00:39:01,500 --> 00:39:06,440 და რადგან მაქსიმალური subarray არის წრფივი დრო, 499 00:39:06,440 --> 00:39:09,370 და ეს შემცირება, ამ პროცესში შექმნის Delta მასივი, 500 00:39:09,370 --> 00:39:11,780 ასევე ხაზოვანი დროს, 501 00:39:11,780 --> 00:39:19,060 მაშინ საბოლოო გადაწყვეტილება აქციების არის O (N) მუშაობის Plus O (N) მუშაობა, ჯერ კიდევ O (N) მუშაობა. 502 00:39:19,060 --> 00:39:23,900 ამიტომ ხაზოვანი ახლა გადაწყვეტა ჩვენი პრობლემა. 503 00:39:23,900 --> 00:39:29,610 ამჯამად ყველას გვესმის ამ ტრანსფორმაციის? 504 00:39:29,610 --> 00:39:32,140 >> ზოგადად, კარგი იდეა, რომ თქვენ ყოველთვის უნდა ჰქონდეს 505 00:39:32,140 --> 00:39:34,290 არის ცდილობენ შეამციროს ახალი პრობლემა, რომ თქვენ ხედავს. 506 00:39:34,290 --> 00:39:37,700 თუ ეს გამოიყურება ნაცნობი ძველი პრობლემა, 507 00:39:37,700 --> 00:39:39,590 ვცდილობთ შემცირების მას ძველი პრობლემა. 508 00:39:39,590 --> 00:39:41,950 და თუ თქვენ შეგიძლიათ გამოიყენოთ ყველა ინსტრუმენტები, რომ თქვენ გამოიყენება ძველი პრობლემა 509 00:39:41,950 --> 00:39:46,450 გადაჭრის ახალი პრობლემა. 510 00:39:46,450 --> 00:39:49,010 ასე რომ გადაიტანოთ up, ტექნიკური გასაუბრება იწვევს. 511 00:39:49,010 --> 00:39:52,280 ეს პრობლემები ალბათ ზოგიერთი უფრო რთული პრობლემები 512 00:39:52,280 --> 00:39:54,700 რომ თქვენ შეიძლება ნახოთ ინტერვიუში, 513 00:39:54,700 --> 00:39:57,690 ასე რომ, თუ თქვენ არ მესმის ყველა პრობლემა, რომ მე უბრალოდ დაფარული, ეს okay. 514 00:39:57,690 --> 00:40:01,080 ეს არის ზოგიერთი უფრო რთული პრობლემები. 515 00:40:01,080 --> 00:40:03,050 პრაქტიკა, პრაქტიკა, პრაქტიკა. 516 00:40:03,050 --> 00:40:08,170 მივეცი ბევრი პრობლემები handout, ამიტომ აუცილებლად შეამოწმეთ იმ გარეთ. 517 00:40:08,170 --> 00:40:11,690 და წარმატებას გისურვებთ თქვენს ინტერვიუებს. ყველა ჩემი რესურსების განთავსებული იქნა ამ ბმულს 518 00:40:11,690 --> 00:40:15,220 და ერთი ჩემი უფროსი მეგობრები შესთავაზა გავაკეთოთ იმიტირებულ ტექნიკური ინტერვიუები, 519 00:40:15,220 --> 00:40:22,050 ასე რომ, თუ თქვენ დაინტერესებული, წერილში Yao იმ ელექტრონული ფოსტის მისამართი. 520 00:40:22,050 --> 00:40:26,070 თუ გაქვთ კითხვები, შეგიძლიათ შემეკითხებით. 521 00:40:26,070 --> 00:40:28,780 მიგაჩნიათ თუ არა ბიჭები გვყავს კონკრეტული შეკითხვები, რომელიც დაკავშირებულია ტექნიკური ინტერვიუები 522 00:40:28,780 --> 00:40:38,440 ან რაიმე სახის პრობლემები, ჩვენ ვხედავთ, ჯერჯერობით? 523 00:40:38,440 --> 00:40:49,910 Okay. ისე, წარმატებას გისურვებთ თქვენს ინტერვიუებს. 524 00:40:49,910 --> 00:40:52,910 [CS50.TV]