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 Γεια σε όλους, είμαι 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 Η συνέντευξη υποτίθεται ότι είναι η ευκαιρία σας για να αναδείξουν τη διαδικασία σκέψης σας. 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 όταν πραγματικά, υπάρχει συνήθως μια λύση ολοφάνερες. 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 Οποιεσδήποτε ερωτήσεις μέχρι τώρα; Εντάξει. 75 00:04:09,810 --> 00:04:11,650 >> Έτσι, ας βουτήξει πρώτο πρόβλημα μας. 76 00:04:11,650 --> 00:04:14,790 "Λαμβάνοντας υπόψη μια σειρά από n ακέραιους αριθμούς, γράφοντας μια λειτουργία που ανακατεύει τη σειρά 77 00:04:14,790 --> 00:04:20,209 σε θέση τέτοια ώστε όλες οι παραλλαγές των ακεραίων η είναι εξίσου πιθανό. " 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 ακέραιους αριθμούς, και θέλω να το ανακατέψετε. 82 00:04:39,660 --> 00:04:46,050 Στον κατάλογο μου, έγραψα μερικά προγράμματα για να αποδείξουν τι εννοώ. 83 00:04:46,050 --> 00:04:48,910 Πάω να ανακατέψετε μια σειρά από 20 στοιχεία, 84 00:04:48,910 --> 00:04:52,490 -10 έως 9, 85 00:04:52,490 --> 00:04:57,050 και θέλω να εξαγάγετε μια λίστα σαν αυτή. 86 00:04:57,050 --> 00:05:02,890 Έτσι, αυτό είναι ταξινομημένο πίνακα εισόδου μου, και θέλω να το ανακατέψετε. 87 00:05:02,890 --> 00:05:07,070 Θα το κάνουμε και πάλι. 88 00:05:07,070 --> 00:05:13,780 Μήπως όλοι καταλαβαίνουν την ερώτηση; Εντάξει. 89 00:05:13,780 --> 00:05:16,730 Έτσι είναι στο χέρι σας. 90 00:05:16,730 --> 00:05:21,220 Ποιες είναι μερικές ιδέες; Μπορείτε να το κάνετε ως n ^ 2, n log n, n; 91 00:05:21,220 --> 00:05:34,400 Ανοικτό σε προτάσεις. 92 00:05:34,400 --> 00:05:37,730 Εντάξει. Έτσι, μια ιδέα, που προτείνεται από Emmy, 93 00:05:37,730 --> 00:05:45,300 είναι το πρώτο υπολογίσουμε ένα τυχαίο αριθμό, τυχαίο ακέραιο αριθμό, σε μία περιοχή από 0 έως 20. 94 00:05:45,300 --> 00:05:49,840 Έτσι αναλάβει σειρά μας έχει μήκος 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 Και με βάση το i επέστρεψε από ραντ - 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 Έχουμε ένα νέο i εδώ, και εμείς αντιγράψετε αυτό το στοιχείο σε αυτή τη θέση. 107 00:06:52,510 --> 00:07:00,960 Στη συνέχεια, τα στοιχεία στροφή πάνω και επαναλαμβάνουμε τη διαδικασία μέχρι να έχουμε πλήρη νέα σειρά μας. 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 μετακομίσεις, αυτό οδηγεί σε O (n ^ 2) shuffle. 117 00:07:41,520 --> 00:07:49,550 Εντάξει. Έτσι, καλή αρχή. Καλή αρχή. 118 00:07:49,550 --> 00:07:55,290 >> Μια άλλη πρόταση είναι να χρησιμοποιήσετε κάτι που είναι γνωστό ως το shuffle Knuth, 119 00:07:55,290 --> 00:07:57,540 ή το Fisher-Yates shuffle. 120 00:07:57,540 --> 00:07:59,630 Και αυτό είναι στην πραγματικότητα μια γραμμική μετάθεση του χρόνου. 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 αλλά αντί να χρησιμοποιεί δύο συστοιχίες για είσοδο / έξοδο μας, 124 00:08:08,580 --> 00:08:13,590 χρησιμοποιούμε το πρώτο μέρος του πίνακα για να παρακολουθείτε ανακατεύονται τμήμα μας, 125 00:08:13,590 --> 00:08:18,400 και να παρακολουθείτε, και στη συνέχεια αφήνουμε το υπόλοιπο της σειράς μας για την unshuffled τμήμα. 126 00:08:18,400 --> 00:08:24,330 Έτσι, εδώ είναι ό, τι θέλω να πω. Ξεκινάμε με - επιλέγουμε ένα i, 127 00:08:24,330 --> 00:08:30,910 μία συστοιχία 0-20. 128 00:08:30,910 --> 00:08:36,150 Τρέχουσα δείκτης μας δείχνει με την πρώτη δείκτη. 129 00:08:36,150 --> 00:08:39,590 Επιλέγουμε κάποια i εδώ 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 Έτσι, ας υποθέσουμε νέα μας i είναι εδώ. 139 00:09:30,650 --> 00:09:39,370 Τώρα έχουμε ανταλλάξει αυτό το i με την τρέχουσα νέα θέση μας εδώ. 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 Ξεκινάμε με την επιλογή μας για i - 143 00:09:55,290 --> 00:09:58,370 αρχίσουμε με το i ισούται με 0, έχουμε πάρει μια τυχαία τοποθεσία j 144 00:09:58,370 --> 00:10:02,420 στην unshuffled τμήματος της συστοιχίας, i έως 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 Αυτό είναι όλος ο κώδικας για να ανακατέψετε σειρά σας. 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 Γιατί είναι κάθε μετάθεση εξίσου πιθανό; 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 Εντάξει. Cool. 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 μου επιστρέφει κάθε μετάθεση εξίσου πιθανό 158 00:10:53,290 --> 00:10:56,120 μέχρι τα πρώτα στοιχεία i. 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 κάθε μετάθεση με εξίσου πιθανό πιθανότητα. 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 της διάταξης εισαγωγής. " 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 (Φοιτητής, ακατάληπτο) >> Ναι. 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] Εντάξει. Έτσι, η ιδέα της 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 Ένα κατώτερο όριο για το δείκτη και ένα άνω όριο δείκτη 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 Έτσι, αν έχουμε επαναλάβει για όλες τις πιθανές εγγραφές εκκίνησης, 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 Χρονικά την περίοδο. 209 00:14:16,660 --> 00:14:18,860 Δεν n αρκετά ^ 2. 210 00:14:18,860 --> 00:14:25,250 Σημειώστε ότι έχουμε επαναλάβει από 0 έως n, 211 00:14:25,250 --> 00:14:27,520 έτσι ώστε να είναι ένα για βρόχο. 212 00:14:27,520 --> 00:14:35,120 Έχουμε επαναλάβει ξανά από σχεδόν την αρχή μέχρι το τέλος, για μια άλλη θηλιά. 213 00:14:35,120 --> 00:14:37,640 Και τώρα, στο πλαίσιο αυτό, θα πρέπει να συνοψίσουμε σε κάθε είσοδο, 214 00:14:37,640 --> 00:14:43,810 έτσι αυτό είναι ένα άλλο για βρόχο. Έτσι έχουμε τρεις ένθετα για βρόχους, n ^ 3. 215 00:14:43,810 --> 00:14:46,560 Εντάξει. Αυτό πηγαίνει ως σημείο εκκίνησης. 216 00:14:46,560 --> 00:14:53,180 Η λύση μας δεν είναι χειρότερη από ό, τι ν ^ 3. 217 00:14:53,180 --> 00:14:55,480 Μήπως όλοι κατανοούν την ωμή δύναμη λύση; 218 00:14:55,480 --> 00:14:59,950 >> Εντάξει. Μια καλύτερη λύση είναι η χρήση μια ιδέα που ονομάζεται δυναμικός προγραμματισμός. 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 σε μία περιοχή [O, n-1]. 226 00:15:37,470 --> 00:15:47,400 Και τώρα έχουμε ένα νέο υποπρόβλημα, όπου γνωρίζουμε ότι, στη σημερινή μας δείκτη 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 Μήπως αυτό έχει νόημα; Εντάξει. 230 00:16:05,160 --> 00:16:12,030 Έτσι έχω κωδικοποιημένες αυτό επάνω, και ας δούμε τι σημαίνει αυτό. 231 00:16:12,030 --> 00:16:16,230 Στο 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 Εντάξει. Έτσι, -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 τότε τελική απάντηση μου είναι απλά, να λάβει ένα σκούπισμα όλη, 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 >> Εντάξει. Λοιπόν, ας καταλάβουμε την επανάληψη για αυτό. 270 00:19:22,160 --> 00:19:27,990 Ας εξετάσουμε μόνο τις πρώτες εγγραφές. 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 Έτσι, αν Καλώ την είσοδο στη θέση i υποπρόβλημα (i), 274 00:19:50,800 --> 00:19:54,910 πώς μπορώ να χρησιμοποιήσω την απάντηση σε προηγούμενη υποπρόβλημα 275 00:19:54,910 --> 00:19:59,360 να απαντήσει σε αυτό το υποπρόβλημα; 276 00:19:59,360 --> 00:20:04,550 Αν δούμε, ας πούμε, η καταχώρηση αυτή. 277 00:20:04,550 --> 00:20:09,190 Πώς μπορώ να υπολογίσει την απάντηση 6 κοιτάζοντας 278 00:20:09,190 --> 00:20:18,780 ένας συνδυασμός αυτού του πίνακα και τις απαντήσεις στα προηγούμενα υποπροβλήματα σε αυτόν τον πίνακα; Ναι; 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 και στη συνέχεια, μπορείτε να προσθέσετε την τρέχουσα υποπρόβλημα. 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 αναφέρεται στην απάντηση για το υποπρόβλημα (i - 1). 285 00:20:50,130 --> 00:20:57,300 Και ας την ονομάσουμε εισόδου Α. σειρά μου 286 00:20:57,300 --> 00:21:01,470 Για να βρείτε μια μέγιστη subarray που καταλήγει στη θέση i, 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 τότε το μέγιστο ποσό που μπορεί να επιτύχει είναι η απάντηση στο προηγούμενο υποπρόβλημα 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, υποπρόβλημα i - 1, καθώς και η τρέχουσα καταχώρηση πίνακα. 295 00:21:42,860 --> 00:21:46,150 Μήπως αυτή η επανάληψη νόημα; 296 00:21:46,150 --> 00:21:50,840 Επανάληψης μας, όπως εμείς μόλις ανακαλύψαμε, είναι υποπρόβλημα i 297 00:21:50,840 --> 00:21:54,740 είναι ίσο με το ανώτατο όριο του προηγούμενου υποπρόβλημα συν τρέχουσα καταχώρηση σειρά μου, 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 Και από τη στιγμή που έχουμε δημιουργήσει αυτό το τραπέζι των λύσεων, τότε η τελική μας απάντηση, 301 00:22:10,060 --> 00:22:13,950 απλά κάνει μια γραμμική σάρωση σε όλη την σειρά υποπρόβλημα 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 Έτσι δημιουργούμε μια νέα σειρά υποπρόβλημα, υποπροβλήματα. 305 00:22:27,320 --> 00:22:32,330 Η πρώτη καταχώρηση είναι είτε 0 ή η πρώτη θέση, το μέγιστο των δύο αυτών. 306 00:22:32,330 --> 00:22:35,670 Και για το υπόλοιπο των υποπροβλήματα 307 00:22:35,670 --> 00:22:39,810 χρησιμοποιούμε την ακριβή επανάληψη που μόλις ανακαλύφθηκαν. 308 00:22:39,810 --> 00:22:49,960 Τώρα έχουμε υπολογίσει το μέγιστο των υποπροβλήματα σειρά μας, και αυτό είναι η τελική μας απάντηση. 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 εμείς μόνο νοιάζονται για την προηγούμενη υποπρόβλημα, 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 Τελευταία αριθμός για το υποπρόβλημα σειρά, και τελευταίο αριθμό για το μέγιστο. 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 Τρέχουσα ποσό μέχρι σήμερα, εδώ, αντικαθιστά το ρόλο του υποπρόβλημα, σειρά υποπρόβλημα μας. 327 00:24:15,830 --> 00:24:20,020 Έτσι τρέχον ποσό, μέχρι στιγμής, είναι η απάντηση στο προηγούμενο υποπρόβλημα. 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 Ερωτήσεις; Εντάξει. 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] Εντάξει, έτσι λύση της - πρόταση της των υπολογιστών 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 Η ωμή δύναμη λύση είναι - ω, έτσι, την πρόταση του Γιώργου είναι ότι το μόνο που χρειάζεται δύο ημέρες 363 00:26:59,410 --> 00:27:02,880 να προσδιορίσει μοναδικά το κέρδος των δύο αυτών ημερών. 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 Υπολογίστε το μέγιστο κέρδος που κάνουμε μετά από επανάληψη σε όλα τα ζεύγη των ημερών. 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 Εντάξει, έτσι είμαι δεν πρόκειται να πάει πέρα ​​από την ωμή δύναμη λύση εδώ. 371 00:27:32,580 --> 00:27:37,420 Πάω να σας πω ότι υπάρχει μια λύση n log n. 372 00:27:37,420 --> 00:27:45,550 Αλγόριθμος όποια στιγμή εσείς ξέρετε ότι είναι n log n; 373 00:27:45,550 --> 00:27:50,730 Δεν είναι μια ερώτηση παγίδα. 374 00:27:50,730 --> 00:27:54,790 >> Συγχώνευση είδος. Συγχώνευση είδος είναι n log 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 Βρείτε το καλύτερο κέρδος που μπορείτε να κάνετε, απλά με την πρώτη ν πάνω από δύο ημέρες. 380 00:28:16,480 --> 00:28:19,780 Στη συνέχεια, θέλετε να oompute το καλύτερο αγοράς / πώλησης ζευγάρι στο δεξιό μισό, 381 00:28:19,780 --> 00:28:23,930 έτσι ώστε η τελευταία ν πάνω από δύο ημέρες. 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 Εντάξει >>. Επιτρέψτε μου λοιπόν να σχεδιάσετε μια εικόνα. 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 Έτσι η πρότασή του είναι, υπολογίζει πρώτα το best buy / sell ζευγάρι, 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 Αγοράζουμε το αριστερό μισό, να πωλήσει στο δεξιό μισό. 393 00:29:33,810 --> 00:29:38,490 Και ο καλύτερος τρόπος για να υπολογίσουμε το καλύτερο Αγορά / Πώληση ζευγάρι που εκτείνεται σε δύο ημίχρονα 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 μόνον εδώ, ή και στα δύο μισά ορίζεται από αυτούς τους τρεις αριθμούς. 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 Τώρα θα υπολογίσουμε το κέρδος που εκτείνεται σε δύο μισά, 410 00:30:54,970 --> 00:31:00,530 και η τελική απάντηση είναι το μέγιστο από αυτά τα τρία. 411 00:31:00,530 --> 00:31:04,120 Εντάξει. 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 Εάν ορίζεται μια συνάρτηση τ (n) είναι ο αριθμός των βημάτων 419 00:31:41,340 --> 00:31:50,010 για ν ημερών, 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 που μπορώ να κάνω σε 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 log n χρόνου. 430 00:32:39,170 --> 00:32:46,880 Ως εκ τούτου, ο αλγόριθμος μας είναι n log n και του χρόνου. 431 00:32:46,880 --> 00:32:52,220 Μήπως αυτή η επανάληψη νόημα; 432 00:32:52,220 --> 00:32:55,780 Ακριβώς μια σύντομη ανακεφαλαίωση του αυτό: 433 00:32:55,780 --> 00:32:59,170 Τ (n) είναι ο αριθμός των σταδίων για να υπολογιστεί το μέγιστο κέρδος 434 00:32:59,170 --> 00:33:02,750 κατά τη διάρκεια της ημέρας n. 435 00:33:02,750 --> 00:33:06,010 Ο τρόπος που χωρίσαμε αναδρομικές κλήσεις μας 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 Ως εκ τούτου, ο αλγόριθμος τυχαία σειρά μας είναι επίσης n log 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 Καλούμε τυχαία στις 8, 453 00:34:36,889 --> 00:34:41,580 η οποία θα καλέσει τυχαία στις πρώτες τέσσερις συμμετοχές, 454 00:34:41,580 --> 00:34:46,250 η οποία θα καλέσει μια μετάθεση για τις δύο πρώτες καταχωρήσεις. 455 00:34:46,250 --> 00:34:51,550 Έτσι στοίβα μας είναι - αυτή είναι η στοίβα μας. 456 00:34:51,550 --> 00:34:54,980 Και μετά λέμε τυχαία σειρά και πάλι στο 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 Όχι. Επειδή κάθε φορά που κάνουμε μια επίκληση, 460 00:35:08,880 --> 00:35:10,770 αναδρομικό επίκληση να ανακατέψετε, 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 είναι της τάξεως των log 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 Μια υπόδειξη: συζητήσαμε μόνο δύο άλλα προβλήματα πριν από αυτό, και αυτό δεν πρόκειται να είναι τυχαία. 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 Κάποιος από εσάς; Emmy; 474 00:36:42,570 --> 00:36:47,680 (Emmy, ακατάληπτο) 475 00:36:47,680 --> 00:36:53,860 [Yu] Ακριβώς. 476 00:36:53,860 --> 00:36:59,940 Έτσι, η μέγιστη problem subarray, 477 00:36:59,940 --> 00:37:10,610 ψάχνουμε για ένα ποσό πάνω από μια συνεχή subarray. 478 00:37:10,610 --> 00:37:16,230 Και πρόταση Emmy για το πρόβλημα των αποθεμάτων, 479 00:37:16,230 --> 00:37:30,720 εξετάσουν τις αλλαγές, ή τα δέλτα. 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 Το κλειδί για τη μείωση problem αποθεμάτων μας σε μέγιστη problem subarray μας 491 00:38:29,990 --> 00:38:36,630 είναι να εξετάσει τα δέλτα μεταξύ των ημερών. 492 00:38:36,630 --> 00:38:40,630 Έτσι δημιουργούμε μια νέα σειρά που ονομάζεται δέλτα, 493 00:38:40,630 --> 00:38:43,000 προετοιμάσει την πρώτη θέση να είναι 0, 494 00:38:43,000 --> 00:38:46,380 και στη συνέχεια για κάθε δέλτα (ί), ας ότι είναι η διαφορά 495 00:38:46,380 --> 00:38:52,830 του πίνακα εισόδου μου (i), και σειρά (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 και αυτή η μείωση, η διαδικασία αυτή της δημιουργίας αυτής της δέλτα συστοιχία, 500 00:39:09,370 --> 00:39:11,780 είναι επίσης γραμμικό χρόνο, 501 00:39:11,780 --> 00:39:19,060 τότε το τελικό διάλυμα για τα αποθέματα είναι O (n) εργασίας συν 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 Έτσι για να ολοκληρωθεί, τεχνική συνεντεύξεις αποτελούν πρόκληση. 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 οπότε αν δεν καταλαβαίνετε όλα τα προβλήματα που μόλις καλύπτονται, είναι εντάξει. 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 Έδωσα πολλά προβλήματα στο φυλλάδιο, έτσι σίγουρα να ελέγξετε έξω αυτά. 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 οπότε αν σας ενδιαφέρει, e-mail Θα Yao σε αυτή τη διεύθυνση email. 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 Εντάξει. Λοιπόν, καλή τύχη σε συνεντεύξεις σας. 524 00:40:49,910 --> 00:40:52,910 [CS50.TV]