در این مطلب، ویدئو حداکثر تعداد بالون – Leetcode 1189 – Python با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:07:52
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,000 –> 00:00:02,720
به کد آموزشی dot io
2
00:00:02,720 –> 00:00:05,200
مراجعه کنید تا 10 عدد در اشتراک خود صرفه جویی کنید. در
3
00:00:05,200 –> 00:00:07,279
این مدت، همه خوش
4
00:00:07,279 –> 00:00:08,960
آمدید و بیایید امروز چند کد دقیق تر بنویسیم،
5
00:00:08,960 –> 00:00:10,960
بنابراین امروز بیایید مشکل
6
00:00:10,960 –> 00:00:13,679
حداکثر تعداد بادکنک ها را حل کنیم که
7
00:00:13,679 –> 00:00:16,560
یک متن رشته ورودی به ما داده می شود. و ما می خواهیم
8
00:00:16,560 –> 00:00:19,920
از کاراکترهای آن رشته استفاده کنیم تا تا
9
00:00:19,920 –> 00:00:23,519
حد امکان نمونه های کلمه بالون را تشکیل
10
00:00:23,519 –> 00:00:25,840
دهیم البته از آن
11
00:00:25,840 –> 00:00:27,920
رشته ورودی می توانیم از هر کاراکتر حداکثر
12
00:00:27,920 –> 00:00:30,560
یک بار استفاده کنیم، بنابراین اساساً مانند این است که به ما داده شده است
13
00:00:30,560 –> 00:00:32,320
شما می دانید فرض کنید این مثال درست است.
14
00:00:32,320 –> 00:00:34,000
یکسری کاراکتر به ما داده
15
00:00:34,000 –> 00:00:36,480
می شود که مجبور نیستیم از همه آنها به درستی استفاده کنیم، اما
16
00:00:36,480 –> 00:00:38,079
برای هر کاراکتر فقط یک بار می توانیم از آن استفاده کنیم،
17
00:00:38,079 –> 00:00:40,480
بنابراین مانند این فرد، می
18
00:00:40,480 –> 00:00:42,719
توانیم یک بار پس از استفاده از آن استفاده
19
00:00:42,719 –> 00:00:45,200
کنیم، دیگر نمی توانیم از آن استفاده کنیم. اما یک گزینه دوم وجود دارد که ما میتوانیم
20
00:00:45,200 –> 00:00:47,680
از این یکی نیز به درستی استفاده کنیم، اما
21
00:00:47,680 –> 00:00:49,840
من نمیتوانم از آن یکی دوباره استفاده کنم و
22
00:00:49,840 –> 00:00:51,360
مهم نیست که چه رشته ورودی که در
23
00:00:51,360 –> 00:00:53,360
واقع به ما داده میشود، همیشه
24
00:00:53,360 –> 00:00:55,920
ایجاد کلمه بالون خواهد بود.
25
00:00:55,920 –> 00:00:58,800
که برای ایجاد th به این شکل نوشته می شود
26
00:00:58,800 –> 00:01:00,719
و کلمه بالون ما به
27
00:01:00,719 –> 00:01:05,360
یک کاراکتر uh b نیاز داریم یک کاراکتر آه
28
00:01:05,360 –> 00:01:08,240
دو l کاراکتر پس در واقع اجازه دهید شروع کنیم
29
00:01:08,240 –> 00:01:11,439
شما می دانیم که تقریباً در اینجا یک نقشه ایجاد می
30
00:01:11,439 –> 00:01:15,280
31
00:01:15,280 –> 00:01:18,479
کنیم.
32
00:01:18,479 –> 00:01:21,200
راههایی
33
00:01:21,200 –> 00:01:23,520
برای حل این مشکل، روشی که من
34
00:01:23,520 –> 00:01:26,479
این کار را انجام میدهم، این است که
35
00:01:26,479 –> 00:01:29,119
مشاهده میکنیم که خوب است اگر یک کاراکتر b
36
00:01:29,119 –> 00:01:30,720
مانند در رشته
37
00:01:30,720 –> 00:01:32,159
ورودیمان داشته باشیم، هر چه اتفاق میافتد اگر
38
00:01:32,159 –> 00:01:34,320
فقط یک کاراکتر b داشته باشیم، وجود ندارد. واقعاً
39
00:01:34,320 –> 00:01:36,960
مهم نیست که ما چند کاراکتر
40
00:01:36,960 –> 00:01:40,479
از بقیه داشته باشیم، می توانیم 10 a را داشته باشیم 10 l
41
00:01:40,479 –> 00:01:42,720
شما 10 مورد از همه چیز را می دانید، اما اگر
42
00:01:42,720 –> 00:01:44,799
فقط یک b داشته باشیم محدود به آن
43
00:01:44,799 –> 00:01:47,680
هستیم، اگر دو تا b داشته باشیم مانند گلوگاه ما است، می
44
00:01:47,680 –> 00:01:49,280
دانیم که می توانیم آیا
45
00:01:49,280 –> 00:01:51,759
میتوانستیم کلمه بالون را حداکثر دو بار بسازیم، اما
46
00:01:51,759 –> 00:01:54,159
شاید حتی دو بار درست نباشد بسته
47
00:01:54,159 –> 00:01:55,520
به تعداد کاراکترهای باقیمانده
48
00:01:55,520 –> 00:01:58,320
به طور مشابه، اگر
49
00:01:58,320 –> 00:02:01,360
فرض کنیم چهار l داشته باشیم، یعنی
50
00:02:01,360 –> 00:02:03,920
حداکثر میتوانیم کلمه بالون را ایجاد کنیم.
51
00:02:03,920 –> 00:02:06,560
دو بار اما شاید نه e دو بار
52
00:02:06,560 –> 00:02:08,239
چگونه به این نتیجه رسیدم، اگرچه اساساً
53
00:02:08,239 –> 00:02:10,239
ما تعداد موارد واقعی
54
00:02:10,239 –> 00:02:11,840
55
00:02:11,840 –> 00:02:13,920
از هر کاراکتری در رشته ورودی را میگیریم
56
00:02:13,920 –> 00:02:15,920
و سپس آن را بر
57
00:02:15,920 –> 00:02:18,560
تعداد کاراکتر مورد نیاز تقسیم میکنیم، بنابراین کاری که
58
00:02:18,560 –> 00:02:20,800
باید انجام دهیم این است که رشته ورودی را بگیریم و
59
00:02:20,800 –> 00:02:23,120
بسازیم. یک نقشه هش مشابه برای
60
00:02:23,120 –> 00:02:24,560
هر یک از این کاراکترها شما می
61
00:02:24,560 –> 00:02:25,920
دانید که آیا ما یک z یا چیزی داریم که ما
62
00:02:25,920 –> 00:02:27,520
واقعاً اهمیتی نمی دهیم که چند z داریم،
63
00:02:27,520 –> 00:02:29,520
اما اگر یک b داشته باشیم، می خواهیم تعداد
64
00:02:29,520 –> 00:02:32,879
آن ها را بدانیم، فرض کنید یک b یکی دو داریم. دو
65
00:02:32,879 –> 00:02:35,120
و یک خوب در این مورد،
66
00:02:35,120 –> 00:02:37,200
واضح است که ما به اندازه کافی برای ایجاد
67
00:02:37,200 –> 00:02:39,760
این کلمه یک بار داریم، اکنون اگر
68
00:02:39,760 –> 00:02:42,560
دو پایان داشتیم، هنوز به اندازه کافی برای
69
00:02:42,560 –> 00:02:44,640
ایجاد کلمه یک زمان واحد
70
00:02:44,640 –> 00:02:46,720
داریم، زیرا ما توسط شخصیت های دیگر محدود شده ایم.
71
00:02:46,720 –> 00:02:49,040
اگر
72
00:02:49,040 –> 00:02:52,080
برای هر یک از اینها دو برابر نیاز داشتیم، اگر دو تا چهار
73
00:02:52,080 –> 00:02:54,319
چهار دو داشتیم، میتوانستیم کلمه را
74
00:02:54,319 –> 00:02:56,319
دو برابر بسازیم که الگوریتم خوبی است تا
75
00:02:56,319 –> 00:02:58,480
در واقع بیشترین
76
00:02:58,480 –> 00:02:59,680
تعداد دفعاتی را که میتوانیم کلمه ایجاد کنیم
77
00:02:59,680 –> 00:03:01,360
اساساً داشتم حرف میزدم
78
00:03:01,360 –> 00:03:03,040
قبل از اینکه بخواهیم
79
00:03:03,040 –> 00:03:05,599
تعداد واقعی کاراکترها را بگیریم، آن را بر
80
00:03:05,599 –> 00:03:07,840
تعداد مورد نیاز تقسیم کنیم تا کلمه ایجاد شود،
81
00:03:07,840 –> 00:03:09,519
بنابراین ما یک محاسبه جدید خواهیم داشت، بنابراین در
82
00:03:09,519 –> 00:03:11,920
این مورد این عدد 2 2 خواهد بود.
83
00:03:11,920 –> 00:03:14,319
نسبت
84
00:03:14,319 –> 00:03:16,239
کاراکترهایی که داریم در مقابل تعداد
85
00:03:16,239 –> 00:03:18,959
مورد نیاز ما و سپس از این
86
00:03:18,959 –> 00:03:21,040
مقدار حداقل آنها را میگیریم
87
00:03:21,040 –> 00:03:22,480
زیرا حداقل آنها
88
00:03:22,480 –> 00:03:24,959
به ما میگویند تنگنای ما به عنوان مثال اگر
89
00:03:24,959 –> 00:03:27,360
من تعداد nها را تغییر دهم یا در واقع
90
00:03:27,360 –> 00:03:29,120
بیایید بگوییم تعداد b به جای
91
00:03:29,120 –> 00:03:32,080
داشتن 2، ما در واقع 1b داشتیم، پس
92
00:03:32,080 –> 00:03:35,440
نسبت ما در اینجا نیز یک خواهد بود، بنابراین از
93
00:03:35,440 –> 00:03:37,360
این مقادیر می خواهیم حداقل را
94
00:03:37,360 –> 00:03:39,440
بگیریم زیرا می خواهیم گلوگاه خود را پیدا کنیم
95
00:03:39,440 –> 00:03:41,280
زیرا در این مورد فقط می توانیم کلمه را ایجاد کنیم.
96
00:03:41,280 –> 00:03:44,239
یک بار بادکنک بزنید، زیرا ما
97
00:03:44,239 –> 00:03:46,480
با تعداد b محدود شدهایم، اکنون
98
00:03:46,480 –> 00:03:48,959
پیچیدگی زمانی برای انجام این کار به خوبی چقدر است،
99
00:03:48,959 –> 00:03:50,000
ما واقعاً باید
100
00:03:50,000 –> 00:03:52,319
در کل رشته ورودی تکرار کنیم،
101
00:03:52,319 –> 00:03:54,400
بنابراین اندازه آن هر چه
102
00:03:54,400 –> 00:03:56,720
باشد بزرگ باشد o n می دانید بعد از
103
00:03:56,720 –> 00:03:58,159
آن استفاده کنید از طریق آن میتوانیم این نقشهها را ایجاد کنیم
104
00:03:58,159 –> 00:03:59,840
و این محاسبات بسیار
105
00:03:59,840 –> 00:04:01,840
ساده است. آیا میدانید که این اساساً
106
00:04:01,840 –> 00:04:03,120
یک نقشه هش است و ما میخواهیم یک
107
00:04:03,120 –> 00:04:05,040
نقشه هش برای رشته ورودی ایجاد کنیم، همچنین
108
00:04:05,040 –> 00:04:07,519
شما میدانید که این مقادیر را دریافت کنید تا
109
00:04:07,519 –> 00:04:09,200
پیچیدگی حافظه همچنین
110
00:04:09,200 –> 00